Skip to content

Releases: pylint-dev/astroid

astroid-2.4.2

18 Apr 19:20
Compare
Choose a tag to compare

astroid-2.4.1

18 Apr 19:20
Compare
Choose a tag to compare
  • Handle the case where the raw builder fails to retrieve the __all__ attribute

    Close #772

  • Restructure the AST parsing heuristic to always pick the same module

    Close pylint-dev/pylint#3540
    Close #773

  • Changed setup.py to work with distlib

    Close #779

  • Do not crash with SyntaxError when parsing namedtuples with invalid label

    Close pylint-dev/pylint#3549

  • Protect against infer_call_result failing with InferenceError in Super.getattr()

    Close pylint-dev/pylint#3529

astroid 2.4.0

27 Apr 09:59
Compare
Choose a tag to compare

Release Date: 2020-04-27

  • Expose a ast_from_string method in AstroidManager, which will accept
    source code as a string and return the corresponding astroid object

    Closes #725

  • BoundMethod.implicit_parameters returns a proper value for __new__

    Close pylint-dev/pylint#2335

  • Allow slots added dynamically to a class to still be inferred

    Close pylint-dev/pylint#2334

  • Allow FunctionDef.getattr to look into both instance attrs and special attributes

    Close pylint-dev/pylint#1078

  • Infer qualified classmethod as a classmethod.

    Close pylint-dev/pylint#3417

  • Prevent a recursion error to happen when inferring the declared metaclass of a class

    Close #749

  • Raise AttributeInferenceError when getattr() receives an empty name

    Close pylint-dev/pylint#2991

  • Prevent a recursion error for self reference variables and type() calls.

    Close #199

  • Do not infer the first argument of a staticmethod in a metaclass as the class itself

    Close pylint-dev/pylint#3032

  • NodeNG.bool_value() gained an optional context parameter

    We need to pass an inference context downstream when inferring the boolean
    value of a node in order to prevent recursion errors and double inference.

    This fix prevents a recursion error with dask library.

    Close pylint-dev/pylint#2985

  • Pass a context argument to astroid.Arguments to prevent recursion errors

    Close pylint-dev/pylint#3414

  • Better inference of class and static methods decorated with custom methods

    Close pylint-dev/pylint#3209

  • Reverse the order of decorators for infer_subscript

    path_wrapper needs to come first, followed by raise_if_nothing_inferred,
    otherwise we won't handle StopIteration correctly.

    Close #762

  • Prevent a recursion error when inferring self-referential variables without definition

    Close pylint-dev/pylint#1285

  • Numpy datetime64.astype return value is inferred as a ndarray.

    Close pylint-dev/pylint#3332

  • Skip non Assign and AnnAssign nodes from enum reinterpretation

    Closes pylint-dev/pylint#3365

  • Numpy ndarray attributes imag and real are now inferred as ndarray.

    Close pylint-dev/pylint#3322

  • Added a call to register_transform for all functions of the brain_numpy_core_multiarray
    module in case the current node is an instance of astroid.Name

    Close #666

  • Use the parent of the node when inferring aug assign nodes instead of the statement

    Close pylint-dev/pylint#2911
    Close pylint-dev/pylint#3214

  • Added some functions to the brain_numpy_core_umath module

    Close pylint-dev/pylint#3319

  • Added some functions of the numpy.core.multiarray module

    Close pylint-dev/pylint#3208

  • All the numpy ufunc functions derived now from a common class that
    implements the specific reduce, accumulate, reduceat,
    outer and at methods.

    Close pylint-dev/pylint#2885

  • nodes.Const.itered returns a list of Const nodes, not strings

    Close pylint-dev/pylint#3306

  • The shape attribute of a numpy ndarray is now a ndarray

    Close pylint-dev/pylint#3139

  • Don't ignore special methods when inspecting gi classes

    Close #728

  • Added transform for scipy.gaussian

  • Add suport for inferring properties.

  • Added a brain for responses

  • Allow inferring positional only arguments.

  • Retry parsing a module that has invalid type comments

    It is possible for a module to use comments that might be interpreted
    as type comments by the ast library. We do not want to completely crash on those
    invalid type comments.

    Close #708

  • Scope the inference to the current bound node when inferring instances of classes

    When inferring instances of classes from arguments, such as self
    in a bound method, we could use as a hint the context's boundnode,
    which indicates the instance from which the inference originated.
    As an example, a subclass that uses a parent's method which returns
    self, will override the self to point to it instead of pointing
    to the parent class.

    Close pylint-dev/pylint#3157

  • Add support for inferring exception instances in all contexts

    We were able to infer exception instances as ExceptionInstance
    only for a handful of cases, but not all. ExceptionInstance has
    support for better inference of .args and other exception related
    attributes that normal instances do not have.
    This additional support should remove certain false positives related
    to .args and other exception attributes in pylint.

    Close pylint-dev/pylint#2333

  • Add more supported parameters to subprocess.check_output

    Close #722

  • Infer args unpacking of self

    Certain stdlib modules use *args to encapsulate
    the self parameter, which results in uninferable
    instances given we rely on the presence of the self
    argument to figure out the instance where we should be
    setting attributes.

    Close pylint-dev/pylint#3216

  • Clean up setup.py

    Make pytest-runner a requirement only if running tests, similar to what was
    done with McCabe.

    Clean up the setup.py file, resolving a handful of minor warnings with it.

  • Handle StopIteration error in infer_int.

    Close pylint-dev/pylint#3274

  • Can access per argument type comments for positional only and keyword only arguments.

    The comments are accessed through through the new
    Arguments.type_comment_posonlyargs and
    Arguments.type_comment_kwonlyargs attributes respectively.

  • Relax upper bound on wrapt

    Close #755

  • Properly analyze CFFI compiled extensions.

astroid 2.3.2

27 Apr 09:58
Compare
Choose a tag to compare
  • All type comments have as parent the corresponding astroid node

    Until now they had as parent the builtin ast node which meant
    we were operating with primitive objects instead of our own.

    Close pylint-dev/pylint#3174

  • Pass an inference context to metaclass() when inferring an object type

    This should prevent a bunch of recursion errors happening in pylint.
    Also refactor the inference of IfExp nodes to use separate contexts
    for each potential branch.

    Close pylint-dev/pylint#3152
    Close pylint-dev/pylint#3159

astroid 2.3.1

27 Apr 09:58
Compare
Choose a tag to compare

Release Date: 2019-09-30

  • A transform for the builtin dataclasses module was added.

    This should address various dataclasses issues that were surfaced
    even more after the release of pylint 2.4.0.
    In the previous versions of astroid, annotated assign nodes were
    allowed to be retrieved via getattr() but that no longer happens
    with the latest astroid release, as those attribute are not actual
    attributes, but rather virtual ones, thus an operation such as getattr()
    does not make sense for them.

  • Update attr brain to partly understand annotated attributes

    Close #656

astroid 2.3.0

27 Apr 09:59
Compare
Choose a tag to compare

Release Date: 2019-09-24

  • Add a brain tip for subprocess.check_output

    Close #689

  • Remove NodeNG.nearest method because of lack of usage in astroid and pylint.

    Close #691

  • Allow importing wheel files. Close #541

  • Annotated AST follows PEP8 coding style when converted to string.

  • Fix a bug where defining a class using type() could cause a DuplicateBasesError.

    Close #644

  • Dropped support for Python 3.4.

  • Numpy brain support is improved.

    Numpy's fundamental type numpy.ndarray has its own brain : brain_numpy_ndarray and
    each numpy module that necessitates brain action has now its own numpy brain :

    • numpy.core.numeric
    • numpy.core.function_base
    • numpy.core.multiarray
    • numpy.core.numeric
    • numpy.core.numerictypes
    • numpy.core.umath
    • numpy.random.mtrand

    Close pylint-dev/pylint#2865
    Close pylint-dev/pylint#2747
    Close pylint-dev/pylint#2721
    Close pylint-dev/pylint#2326
    Close pylint-dev/pylint#2021

  • assert only functions are properly inferred as returning None

    Close #668

  • Add support for Python 3.8's NamedExpr nodes, which is part of assignment expressions.

    Close #674

  • Added support for inferring IfExp nodes.

  • Instances of exceptions are inferred as such when inferring in non-exception context

    This allows special inference support for exception attributes such as .args.

    Close pylint-dev/pylint#2333

  • Drop a superfluous and wrong callcontext when inferring the result of a context manager

    Close pylint-dev/pylint#2859

  • igetattr raises InferenceError on re-inference of the same object

    This prevents StopIteration from leaking when we encounter the same
    object in the current context, which could result in various RuntimeErrors
    leaking in other parts of the inference.
    Until we get a global context per inference, the solution is sort of a hack,
    as with the suggested global context improvement, we could theoretically
    reuse the same inference object.

    Close #663

  • Variable annotations can no longer be retrieved with ClassDef.getattr

    Unless they have an attached value, class variable annotations can no longer
    be retrieved with ClassDef.getattr.

  • Improved builtin inference for tuple, set, frozenset, list and dict

    We were properly inferring these callables only if they had consts as
    values, but that is not the case most of the time. Instead we try to infer
    the values that their arguments can be and use them instead of assuming
    Const nodes all the time.

    Close pylint-dev/pylint#2841

  • The last except handler wins when inferring variables bound in an except handler.

    Close pylint-dev/pylint#2777

  • threading.Lock.locked() is properly recognized as a member of threading.Lock

    Close pylint-dev/pylint#2791

  • Fix recursion error involving len and self referential attributes

    Close pylint-dev/pylint#2736
    Close pylint-dev/pylint#2734
    Close pylint-dev/pylint#2740

  • Can access per argument type comments through new Arguments.type_comment_args attribute.

    Close #665

  • Fix being unable to access class attributes on a NamedTuple.

    Close pylint-dev/pylint#1628

  • Fixed being unable to find distutils submodules by name when in a virtualenv.

    Close pylint-dev/pylint#73