Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify on non-Module roots #2536

Merged

Conversation

temyurchenko
Copy link
Contributor

The PR fixes a missing parent on the "main" node and weakens the typing of "NodeNG.root" to better reflect the reality

I don't know what entry to fill in in the ChangeLog.

Type of Changes

Type
🐛 Bug fix
📜 Docs

Description

Refs #120, partially.

@temyurchenko
Copy link
Contributor Author

temyurchenko commented Sep 4, 2024

The reason the CI is failing is that at the class construction stage classes have "Unknown" for a parent. On the previous revision, the result was just that all builtin (or not just?) classes have "Unknown" as their locals['__module__'].
I'm thinking of a better way to approach it in this version.

@DanielNoord
Copy link
Collaborator

I think this will cause a lot of type errors in pylint as we assume root() always returns... Can we get away by asserting?

@temyurchenko
Copy link
Contributor Author

I think this will cause a lot of type errors in pylint as we assume root() always returns... Can we get away by asserting?

I'm currently in the process of eliminating non-module roots. Without that, the assert is going to fail a loot of times.

@temyurchenko
Copy link
Contributor Author

temyurchenko commented Sep 5, 2024

I think this will cause a lot of type errors in pylint as we assume root() always returns... Can we get away by asserting?

What is the difference between Uninferable and InferenceError? Which one should be used and in what cases? Is there some documentation on it? Or a specific person to ask?

@DanielNoord
Copy link
Collaborator

I think this will cause a lot of type errors in pylint as we assume root() always returns... Can we get away by asserting?

I'm currently in the process of eliminating non-module roots. Without that, the assert is going to fail a loot of times.

I don't understand what you mean with this?

I think this will cause a lot of type errors in pylint as we assume root() always returns... Can we get away by asserting?

What is the difference between Uninferable and InferenceError? Which one should be used and in what cases? Is there some documentation on it? Or a specific person to ask?

It depends on the situation. Ideally InferenceError isn't exposed to the users of astroid such as pylint so that they only need to handle Uninferable.

@temyurchenko
Copy link
Contributor Author

I don't understand what you mean with this?

The root() currently returns non-Module nodes, often. So, if we just assert that the return is a Module, that assert is going to fail often.

It depends on the situation. Ideally InferenceError isn't exposed to the users of astroid such as pylint so that they only need to handle Uninferable.

What is the logic for preferring one or the other internally? I often see lines like:

            if not name.startswith("__") and self.has_dynamic_getattr(context):
                # class handle some dynamic attributes, return a Uninferable object
                yield util.Uninferable
            else:
                raise InferenceError(
                    str(error), target=self, attribute=name, context=context
                ) from error

(this one is from scoped_nodes.ClassDef.igetattr)

@temyurchenko
Copy link
Contributor Author

I don't understand what you mean with this?

The root() currently returns non-Module nodes, often. So, if we just assert that the return is a Module, that assert is going to fail often.

It depends on the situation. Ideally InferenceError isn't exposed to the users of astroid such as pylint so that they only need to handle Uninferable.

What is the logic for preferring one or the other internally? I often see lines like:

            if not name.startswith("__") and self.has_dynamic_getattr(context):
                # class handle some dynamic attributes, return a Uninferable object
                yield util.Uninferable
            else:
                raise InferenceError(
                    str(error), target=self, attribute=name, context=context
                ) from error

(this one is from scoped_nodes.ClassDef.igetattr)

What is the logic for preferring one or the other internally? I often see lines like:

I see, raising the InferenceError doesn't let adding new inference results, while just yielding uninferrable does allow it.

@temyurchenko temyurchenko force-pushed the clarify-non-module-root branch 3 times, most recently from b693781 to c2c38cd Compare September 6, 2024 00:19
Copy link

codecov bot commented Sep 6, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 93.24%. Comparing base (d3df248) to head (5e77e13).
Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2536      +/-   ##
==========================================
- Coverage   93.25%   93.24%   -0.01%     
==========================================
  Files          93       93              
  Lines       11050    11049       -1     
==========================================
- Hits        10305    10303       -2     
- Misses        745      746       +1     
Flag Coverage Δ
linux 93.13% <100.00%> (-0.01%) ⬇️
pypy 93.24% <100.00%> (-0.01%) ⬇️
windows 93.23% <100.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
astroid/brain/brain_argparse.py 95.83% <ø> (ø)
astroid/brain/brain_builtin_inference.py 92.06% <100.00%> (ø)
astroid/brain/brain_namedtuple_enum.py 93.86% <ø> (ø)
astroid/manager.py 90.00% <100.00%> (ø)
astroid/nodes/node_ng.py 93.05% <100.00%> (+0.04%) ⬆️
astroid/nodes/scoped_nodes/scoped_nodes.py 93.33% <ø> (-0.01%) ⬇️
astroid/objects.py 94.26% <ø> (ø)
astroid/raw_building.py 94.55% <ø> (-0.04%) ⬇️

... and 1 file with indirect coverage changes

@temyurchenko temyurchenko force-pushed the clarify-non-module-root branch 5 times, most recently from 703f23a to ebae45f Compare September 6, 2024 22:12
@temyurchenko
Copy link
Contributor Author

Now, this should also close #1490.

I tried my best to give complete descriptions to the commits, because they are lengthy. I also changed the annotation of root() back to just Module (with an added assert).

I'm happy to elaborate more on changes, since there are quite a few of them.

As a side note, I still feel that it's not a very honest type signature, given how many nodes we are creating out-of-tree and thus without a parent (see const_factory). Furthermore, there is no enforcement of the parent is not None invariant anywhere in the codebase, so the accidents are bound to creep in.

@temyurchenko
Copy link
Contributor Author

Also fixes #2517

Copy link
Collaborator

@DanielNoord DanielNoord left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome changes! But also pretty hard to review.

Maintainer time on astroid is sparse and nobody has actively worked on its internals for about a year.

I'd be open to spending some time of the next days/weeks to get this merged but I an only approve smaller bite sized PRs. If you're op for that let's go down that route!

For example, the first commit could be a separate PR to declutter this PR.
The second commit does a lot of things at once (as indicated by the commit message). I think a lot of changes in there could be separated into separate PRs, also to show their effects on the tests more clearly. That helps with reviewing them.

astroid/bases.py Outdated Show resolved Hide resolved
astroid/bases.py Outdated Show resolved Hide resolved
@@ -20,13 +20,10 @@ def infer_namespace(node, context: InferenceContext | None = None):
"Namespace",
lineno=node.lineno,
col_offset=node.col_offset,
parent=nodes.Unknown(),
parent=AstroidManager().adhoc_module, # this class is not real
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure about the name of adhoc. But I also don't have better suggestions

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can come up with other options. Please, tell what you are unsure about it, to guide the thought process for new names.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Pierre-Sassoulas Any suggestions here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe synthetic_root_node, placeholder_root_node, placeholder_parent_node, placeholder_module_node ? wasn't sure what adhoc meant exactly before checking the definition to be honest.

astroid/brain/brain_builtin_inference.py Outdated Show resolved Hide resolved
astroid/brain/brain_builtin_inference.py Outdated Show resolved Hide resolved
astroid/brain/brain_builtin_inference.py Outdated Show resolved Hide resolved
astroid/brain/brain_namedtuple_enum.py Outdated Show resolved Hide resolved
astroid/interpreter/objectmodel.py Outdated Show resolved Hide resolved
@temyurchenko
Copy link
Contributor Author

I'd be open to spending some time of the next days/weeks to get this merged but I an only approve smaller bite sized PRs. If you're op for that let's go down that route!

For sure.

For example, the first commit could be a separate PR to declutter this PR.

Will do.

The second commit does a lot of things at once (as indicated by the commit message). I think a lot of changes in there could be separated into separate PRs, also to show their effects on the tests more clearly. That helps with reviewing them.

Will do.

Regarding isort. I've grepped the project and found a few similar isort comment. Based on that I concluded that the project uses isort to sort imports. However, when I ran isort on it, it resulted in quite a few changes, thus the "isort: off" comments. Could you please tell me if I should use isort? If so, is there a special config for the project? I wasn't able to find one.

@DanielNoord
Copy link
Collaborator

"I", # isort

We use ruff to do our import sorting now. Any comments you found are probably outdated (and could be removed in a separate PR)

@temyurchenko
Copy link
Contributor Author

temyurchenko commented Sep 9, 2024

I think a lot of changes in there could be separated into separate PRs, also to show their effects on the tests more clearly.

Is it possible to have something like an merge train on github? That is, for one PR to depend on some previous PR? It's possible to emulate with merging into branches, but then you'd have to do reviews on my local fork, since I can't create branches in this repository.

If not, the simplest way would probably be do just breakup commits within this PR. Would you be open to that?

@DanielNoord
Copy link
Collaborator

DanielNoord commented Sep 9, 2024

I think a lot of changes in there could be separated into separate PRs, also to show their effects on the tests more clearly.

Is it possible to have something like an merge train on github? That is, for one PR to depend on some previous PR? It's possible to emulate with merging into branches, but then you'd have to do reviews on my local fork, since I can't create branches in this repository.

If not, the simplest way would probably be do just breakup commits within this PR. Would you be open to that?

Sadly it doesn't.

I'm okay with splitting up in this PR but I think that increases the risk of me (and other maintainers) finding it hard to approve of the full PR and merge it.

Separate PRs make it much easier to spend 15-20 minutes during lunch to review and merge the smaller commits. From experience I know although it involves more rebase work in the end it significantly increases the chances of astroid PRs landing on main.

Edit: I wanted to add that I'm mainly saying this because I really think the changes in this PR are super valuable and should be merged. I'd hate for this to die down due to maintainer fatigue and want to do anything to prevent that from happening :)

@temyurchenko
Copy link
Contributor Author

I'm okay with splitting up in this PR but I think that increases the risk of me (and other maintainers) finding it hard to approve of the full PR and merge it.

Sure, I'll do my best to achieve that.

@DanielNoord
Copy link
Collaborator

To give an update: changes coming a long nicely. @temyurchenko has been very helpful in rebasing and responding to comments.

#2563 is on my radar, but after a long week at work I don't really have the capacity to have a good look at it. I hope to do so this weekend or on Monday.

DanielNoord
DanielNoord previously approved these changes Oct 3, 2024
Copy link
Collaborator

@DanielNoord DanielNoord left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! Great job working with us to get this merged. Working with you was a joy!

I would be okay with adding a Changelog for this as I think you work should be recognized!

Copy link
Member

@Pierre-Sassoulas Pierre-Sassoulas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your work on this @temyurchenko ! There's some warning in the CI job that need to be fixed before merging and we could rename "adhoc_module" if it makes sense, but LGTM.

@temyurchenko
Copy link
Contributor Author

temyurchenko commented Oct 3, 2024

Awesome! Great job working with us to get this merged. Working with you was a joy!

I would be okay with adding a Changelog for this as I think you work should be recognized!

Thank you, same for you and @Pierre-Sassoulas!

A bit later, I will do one final pass over the changes here, fix the commit message and fix the the linting errors. Not sure, if the changelog is needed, since this is mostly an internal change.

@temyurchenko
Copy link
Contributor Author

temyurchenko commented Oct 3, 2024

we could rename "adhoc_module" if it makes sense

Okay, I'll go with "synthetic_root" or "synthetic_module".

It's a part of the campaign to get rid of non-module roots
The nodes are often created in an ad-hoc way, and their parent is not
   always set. We can't control for that invariant fully in the
   constructor, since the parent is sometimes set outside of the
   constructor. The previous commits did their best to clean up such
   situations, but let's add an assert just in case.
@Pierre-Sassoulas Pierre-Sassoulas merged commit 275f508 into pylint-dev:main Oct 7, 2024
20 checks passed
cdce8p added a commit to cdce8p/astroid that referenced this pull request Nov 6, 2024
commit 0954cd4
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Tue Oct 8 12:11:04 2024 -0400

    Bump CI jobs to python 3.13 (pylint-dev#2607)

commit f201120
Author: Akhil Kamat <akhil.kamat@gmail.com>
Date:   Tue Oct 8 04:45:54 2024 -0400

    Change order of search path to fix inconsistency between pylint and astroid. (pylint-dev#2589)

commit 8696918
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Oct 8 06:53:04 2024 +0200

    Bump actions/cache from 4.0.2 to 4.1.0 (pylint-dev#2603)

    Bumps [actions/cache](https://github.com/actions/cache) from 4.0.2 to 4.1.0.
    - [Release notes](https://github.com/actions/cache/releases)
    - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
    - [Commits](actions/cache@v4.0.2...v4.1.0)

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

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

commit e548c2f
Author: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date:   Tue Oct 8 06:39:51 2024 +0200

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

    updates:
    - [github.com/pre-commit/pre-commit-hooks: v4.6.0 → v5.0.0](pre-commit/pre-commit-hooks@v4.6.0...v5.0.0)
    - [github.com/astral-sh/ruff-pre-commit: v0.6.8 → v0.6.9](astral-sh/ruff-pre-commit@v0.6.8...v0.6.9)
    - [github.com/psf/black: 24.8.0 → 24.10.0](psf/black@24.8.0...24.10.0)

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

commit 6679ec2
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Oct 7 23:03:27 2024 +0200

    Bump actions/checkout from 4.2.0 to 4.2.1 (pylint-dev#2604)

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

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

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

commit bb1f6b2
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Oct 7 23:03:04 2024 +0200

    Bump actions/upload-artifact from 4.4.0 to 4.4.1 (pylint-dev#2605)

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

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

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

commit 275f508
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
Date:   Mon Oct 7 01:08:43 2024 -0400

    Clarification on non-Module roots (pylint-dev#2536)

    * remove last instances of Unknown parents (and None parents in tests)

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

    * assert that the root() is always a Module

    The nodes are often created in an ad-hoc way, and their parent is not
       always set. We can't control for that invariant fully in the
       constructor, since the parent is sometimes set outside of the
       constructor. The previous commits did their best to clean up such
       situations, but let's add an assert just in case.

commit d3df248
Merge: f63a393 6dedc26
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Fri Oct 4 14:22:11 2024 -0400

    Merge pull request pylint-dev#2601 from pylint-dev/post-3.3.5

    Post 3.3.5

commit 6dedc26
Merge: f63a393 8c74a5f
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Fri Oct 4 13:36:05 2024 -0400

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

commit f63a393
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Fri Oct 4 04:18:22 2024 -0400

    Fix python 3.13 compatibility re: collections.abc (pylint-dev#2598)

commit 6dba72c
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <nicholasdrozd@gmail.com>
Date:   Mon Sep 30 15:14:25 2024 -0400

    Enable design complexity checks (pylint-dev#2591)

commit 36094ed
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit d394fb9
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Mon Sep 30 08:52:35 2024 -0400

    Bump astroid to 4.0.0-dev0, update changelog

commit c7ea1e9
Author: correctmost <134317971+correctmost@users.noreply.github.com>
Date:   Sat Sep 7 14:47:47 2024 -0400

    Consolidate numpy member transforms to reduce function calls

commit f19fc0a
Author: Artem Yurchenko <artemyurchenko@zoho.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <eric.vergnaud@wanadoo.fr>
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 <jacobtylerwalls@gmail.com>
Date:   Sun Sep 22 09:14:31 2024 -0400

    Address pylint 3.3 messages (pylint-dev#2575)

commit a679550
Author: Nick Drozd <nicholasdrozd@gmail.com>
Date:   Sun Sep 22 09:00:09 2024 -0400

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

commit 58286a1
Author: Akhil Kamat <akhil.kamat@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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] <support@github.com>
    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 <44875844+temyurchenko@users.noreply.github.com>
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 <akhil.kamat@gmail.com>
Date:   Mon Sep 9 18:17:02 2024 -0400

    add setuptools dependency for python >= 3.12

commit 44907c2
Author: akamat10 <akhil.kamat@gmail.com>
Date:   Mon Sep 9 18:16:37 2024 -0400

    Remove setuptools dependency from ci

commit b4ac0e2
Author: Akhil Kamat <akhil.kamat@gmail.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <artemyurchenko@zoho.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <artemyurchenko@zoho.com>
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 <artemyurchenko@zoho.com>
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 <artemyurchenko@zoho.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
Date:   Sun Sep 8 00:59:25 2024 -0400

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

commit 887668b
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
Date:   Sat Sep 7 00:47:03 2024 -0400

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

commit dc5dafb
Author: correctmost <134317971+correctmost@users.noreply.github.com>
Date:   Fri Sep 6 01:37:53 2024 -0400

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

commit 5982618
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
Date:   Wed Sep 4 10:34:55 2024 -0400

    Fix type annotations for tuple parameters

commit 6deb34f
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <pierre.sassoulas@gmail.com>

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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 37b6c0d
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 5e8fac7
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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] <support@github.com>

    * Upgrade furo too

    ---------

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>

commit 86c7871
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Sat Aug 10 17:06:09 2024 -0400

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

commit 0156c04
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <eric.vergnaud@wanadoo.fr>
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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit b105186
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Sun Aug 4 09:10:21 2024 -0400

    Bump astroid to 3.4.0-dev0, update changelog
cdce8p added a commit to cdce8p/astroid that referenced this pull request Nov 6, 2024
commit 275f508
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
Date:   Mon Oct 7 01:08:43 2024 -0400

    Clarification on non-Module roots (pylint-dev#2536)

    * remove last instances of Unknown parents (and None parents in tests)

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

    * assert that the root() is always a Module

    The nodes are often created in an ad-hoc way, and their parent is not
       always set. We can't control for that invariant fully in the
       constructor, since the parent is sometimes set outside of the
       constructor. The previous commits did their best to clean up such
       situations, but let's add an assert just in case.

commit d3df248
Merge: f63a393 6dedc26
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Fri Oct 4 14:22:11 2024 -0400

    Merge pull request pylint-dev#2601 from pylint-dev/post-3.3.5

    Post 3.3.5

commit 6dedc26
Merge: f63a393 8c74a5f
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Fri Oct 4 13:36:05 2024 -0400

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

commit f63a393
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Fri Oct 4 04:18:22 2024 -0400

    Fix python 3.13 compatibility re: collections.abc (pylint-dev#2598)

commit 6dba72c
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <nicholasdrozd@gmail.com>
Date:   Mon Sep 30 15:14:25 2024 -0400

    Enable design complexity checks (pylint-dev#2591)

commit 36094ed
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit d394fb9
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Mon Sep 30 08:52:35 2024 -0400

    Bump astroid to 4.0.0-dev0, update changelog

commit c7ea1e9
Author: correctmost <134317971+correctmost@users.noreply.github.com>
Date:   Sat Sep 7 14:47:47 2024 -0400

    Consolidate numpy member transforms to reduce function calls

commit f19fc0a
Author: Artem Yurchenko <artemyurchenko@zoho.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <eric.vergnaud@wanadoo.fr>
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 <jacobtylerwalls@gmail.com>
Date:   Sun Sep 22 09:14:31 2024 -0400

    Address pylint 3.3 messages (pylint-dev#2575)

commit a679550
Author: Nick Drozd <nicholasdrozd@gmail.com>
Date:   Sun Sep 22 09:00:09 2024 -0400

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

commit 58286a1
Author: Akhil Kamat <akhil.kamat@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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] <support@github.com>
    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 <44875844+temyurchenko@users.noreply.github.com>
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 <akhil.kamat@gmail.com>
Date:   Mon Sep 9 18:17:02 2024 -0400

    add setuptools dependency for python >= 3.12

commit 44907c2
Author: akamat10 <akhil.kamat@gmail.com>
Date:   Mon Sep 9 18:16:37 2024 -0400

    Remove setuptools dependency from ci

commit b4ac0e2
Author: Akhil Kamat <akhil.kamat@gmail.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <artemyurchenko@zoho.com>
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 <44875844+temyurchenko@users.noreply.github.com>
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 <artemyurchenko@zoho.com>
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 <artemyurchenko@zoho.com>
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 <artemyurchenko@zoho.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
Date:   Sun Sep 8 00:59:25 2024 -0400

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

commit 887668b
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
Date:   Sat Sep 7 00:47:03 2024 -0400

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

commit dc5dafb
Author: correctmost <134317971+correctmost@users.noreply.github.com>
Date:   Fri Sep 6 01:37:53 2024 -0400

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

commit 5982618
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
Date:   Wed Sep 4 10:34:55 2024 -0400

    Fix type annotations for tuple parameters

commit 6deb34f
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <pierre.sassoulas@gmail.com>

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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 37b6c0d
Author: temyurchenko <44875844+temyurchenko@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 5e8fac7
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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] <support@github.com>

    * Upgrade furo too

    ---------

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>

commit 86c7871
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Sat Aug 10 17:06:09 2024 -0400

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

commit 0156c04
Author: correctmost <134317971+correctmost@users.noreply.github.com>
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 <134317971+correctmost@users.noreply.github.com>
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 <jacobtylerwalls@gmail.com>
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 <jacobtylerwalls@gmail.com>
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 <eric.vergnaud@wanadoo.fr>
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] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit b105186
Author: Jacob Walls <jacobtylerwalls@gmail.com>
Date:   Sun Aug 4 09:10:21 2024 -0400

    Bump astroid to 3.4.0-dev0, update changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants