The following issues were found

numpy/distutils/command/sdist.py
7 issues
Missing module docstring
Error

Line: 1 Column: 1

              import sys
if 'setuptools' in sys.modules:
    from setuptools.command.sdist import sdist as old_sdist
else:
    from distutils.command.sdist import sdist as old_sdist

from numpy.distutils.misc_util import get_data_files

class sdist(old_sdist):

            

Reported by Pylint.

Import "from numpy.distutils.misc_util import get_data_files" should be placed at the top of the module
Error

Line: 7 Column: 1

              else:
    from distutils.command.sdist import sdist as old_sdist

from numpy.distutils.misc_util import get_data_files

class sdist(old_sdist):

    def add_defaults (self):
        old_sdist.add_defaults(self)

            

Reported by Pylint.

Missing class docstring
Error

Line: 9 Column: 1

              
from numpy.distutils.misc_util import get_data_files

class sdist(old_sdist):

    def add_defaults (self):
        old_sdist.add_defaults(self)

        dist = self.distribution

            

Reported by Pylint.

Class name "sdist" doesn't conform to PascalCase naming style
Error

Line: 9 Column: 1

              
from numpy.distutils.misc_util import get_data_files

class sdist(old_sdist):

    def add_defaults (self):
        old_sdist.add_defaults(self)

        dist = self.distribution

            

Reported by Pylint.

Useless return at end of function or method
Error

Line: 11 Column: 5

              
class sdist(old_sdist):

    def add_defaults (self):
        old_sdist.add_defaults(self)

        dist = self.distribution

        if dist.has_data_files():

            

Reported by Pylint.

Variable name "h" doesn't conform to snake_case naming style
Error

Line: 22 Column: 17

              
        if dist.has_headers():
            headers = []
            for h in dist.headers:
                if isinstance(h, str): headers.append(h)
                else: headers.append(h[1])
            self.filelist.extend(headers)

        return

            

Reported by Pylint.

More than one statement on a single line
Error

Line: 23 Column: 40

                      if dist.has_headers():
            headers = []
            for h in dist.headers:
                if isinstance(h, str): headers.append(h)
                else: headers.append(h[1])
            self.filelist.extend(headers)

        return

            

Reported by Pylint.

numpy/f2py/tests/test_compile_function.py
7 issues
Unable to import 'pytest'
Error

Line: 8 Column: 1

              import os
import uuid
from importlib import import_module
import pytest

import numpy.f2py

from numpy.testing import assert_equal
from . import util

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 13 Column: 1

              import numpy.f2py

from numpy.testing import assert_equal
from . import util


def setup_module():
    if not util.has_c_compiler():
        pytest.skip("Needs C compiler")

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 16 Column: 1

              from . import util


def setup_module():
    if not util.has_c_compiler():
        pytest.skip("Needs C compiler")
    if not util.has_f77_compiler():
        pytest.skip('Needs FORTRAN 77 compiler')


            

Reported by Pylint.

Missing function or method docstring
Error

Line: 28 Column: 1

              @pytest.mark.parametrize(
    "extra_args", [['--noopt', '--debug'], '--noopt --debug', '']
    )
@pytest.mark.leaks_references(reason="Imported module seems never deleted.")
def test_f2py_init_compile(extra_args):
    # flush through the f2py __init__ compile() function code path as a
    # crude test for input handling following migration from
    # exec_command() to subprocess.check_output() in gh-11937


            

Reported by Pylint.

Missing function or method docstring
Error

Line: 86 Column: 1

                          del sys.modules[modname]


def test_f2py_init_compile_failure():
    # verify an appropriate integer status value returned by
    # f2py.compile() when invalid Fortran is provided
    ret_val = numpy.f2py.compile(b"invalid")
    assert_equal(ret_val, 1)


            

Reported by Pylint.

Missing function or method docstring
Error

Line: 93 Column: 1

                  assert_equal(ret_val, 1)


def test_f2py_init_compile_bad_cmd():
    # verify that usage of invalid command in f2py.compile() returns
    # status value of 127 for historic consistency with exec_command()
    # error handling

    # patch the sys Python exe path temporarily to induce an OSError

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 114 Column: 1

              @pytest.mark.parametrize('fsource',
        ['program test_f2py\nend program test_f2py',
         b'program test_f2py\nend program test_f2py',])
def test_compile_from_strings(tmpdir, fsource):
    # Make sure we can compile str and bytes gh-12796
    cwd = os.getcwd()
    try:
        os.chdir(str(tmpdir))
        ret_val = numpy.f2py.compile(

            

Reported by Pylint.

numpy/f2py/tests/test_common.py
7 issues
Unable to import 'pytest'
Error

Line: 3 Column: 1

              import os
import sys
import pytest

import numpy as np
from . import util

from numpy.testing import assert_array_equal


            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 6 Column: 1

              import pytest

import numpy as np
from . import util

from numpy.testing import assert_array_equal

def _path(*a):
    return os.path.join(*((os.path.dirname(__file__),) + a))

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              import os
import sys
import pytest

import numpy as np
from . import util

from numpy.testing import assert_array_equal


            

Reported by Pylint.

third party import "from numpy.testing import assert_array_equal" should be placed before "from . import util"
Error

Line: 8 Column: 1

              import numpy as np
from . import util

from numpy.testing import assert_array_equal

def _path(*a):
    return os.path.join(*((os.path.dirname(__file__),) + a))

class TestCommonBlock(util.F2PyTest):

            

Reported by Pylint.

Missing class docstring
Error

Line: 13 Column: 1

              def _path(*a):
    return os.path.join(*((os.path.dirname(__file__),) + a))

class TestCommonBlock(util.F2PyTest):
    sources = [_path('src', 'common', 'block.f')]

    @pytest.mark.skipif(sys.platform=='win32',
                        reason='Fails with MinGW64 Gfortran (Issue #9673)')
    def test_common_block(self):

            

Reported by Pylint.

Too few public methods (1/2)
Error

Line: 13 Column: 1

              def _path(*a):
    return os.path.join(*((os.path.dirname(__file__),) + a))

class TestCommonBlock(util.F2PyTest):
    sources = [_path('src', 'common', 'block.f')]

    @pytest.mark.skipif(sys.platform=='win32',
                        reason='Fails with MinGW64 Gfortran (Issue #9673)')
    def test_common_block(self):

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 18 Column: 5

              
    @pytest.mark.skipif(sys.platform=='win32',
                        reason='Fails with MinGW64 Gfortran (Issue #9673)')
    def test_common_block(self):
        self.module.initcb()
        assert_array_equal(self.module.block.long_bn,
                           np.array(1.0, dtype=np.float64))
        assert_array_equal(self.module.block.string_bn,
                           np.array('2', dtype='|S1'))

            

Reported by Pylint.

numpy/typing/tests/data/pass/array_like.py
7 issues
Unused List imported from typing
Error

Line: 1 Column: 1

              from typing import Any, List, Optional

import numpy as np
from numpy.typing import ArrayLike, _SupportsArray

x1: ArrayLike = True
x2: ArrayLike = 5
x3: ArrayLike = 1.0
x4: ArrayLike = 1 + 1j

            

Reported by Pylint.

Unused argument 'dtype'
Error

Line: 21 Column: 25

              

class A:
    def __array__(self, dtype: Optional[np.dtype] = None) -> np.ndarray:
        return np.array([1, 2, 3])


x13: ArrayLike = A()


            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import Any, List, Optional

import numpy as np
from numpy.typing import ArrayLike, _SupportsArray

x1: ArrayLike = True
x2: ArrayLike = 5
x3: ArrayLike = 1.0
x4: ArrayLike = 1 + 1j

            

Reported by Pylint.

Too few public methods (1/2)
Error

Line: 20 Column: 1

              x12: ArrayLike = memoryview(b'foo')


class A:
    def __array__(self, dtype: Optional[np.dtype] = None) -> np.ndarray:
        return np.array([1, 2, 3])


x13: ArrayLike = A()

            

Reported by Pylint.

Class name "A" doesn't conform to PascalCase naming style
Error

Line: 20 Column: 1

              x12: ArrayLike = memoryview(b'foo')


class A:
    def __array__(self, dtype: Optional[np.dtype] = None) -> np.ndarray:
        return np.array([1, 2, 3])


x13: ArrayLike = A()

            

Reported by Pylint.

Missing class docstring
Error

Line: 20 Column: 1

              x12: ArrayLike = memoryview(b'foo')


class A:
    def __array__(self, dtype: Optional[np.dtype] = None) -> np.ndarray:
        return np.array([1, 2, 3])


x13: ArrayLike = A()

            

Reported by Pylint.

Method could be a function
Error

Line: 21 Column: 5

              

class A:
    def __array__(self, dtype: Optional[np.dtype] = None) -> np.ndarray:
        return np.array([1, 2, 3])


x13: ArrayLike = A()


            

Reported by Pylint.

numpy/f2py/tests/test_block_docstring.py
7 issues
Unable to import 'pytest'
Error

Line: 2 Column: 1

              import sys
import pytest
from . import util

from numpy.testing import assert_equal, IS_PYPY

class TestBlockDocString(util.F2PyTest):
    code = """
      SUBROUTINE FOO()

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 3 Column: 1

              import sys
import pytest
from . import util

from numpy.testing import assert_equal, IS_PYPY

class TestBlockDocString(util.F2PyTest):
    code = """
      SUBROUTINE FOO()

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              import sys
import pytest
from . import util

from numpy.testing import assert_equal, IS_PYPY

class TestBlockDocString(util.F2PyTest):
    code = """
      SUBROUTINE FOO()

            

Reported by Pylint.

third party import "from numpy.testing import assert_equal, IS_PYPY" should be placed before "from . import util"
Error

Line: 5 Column: 1

              import pytest
from . import util

from numpy.testing import assert_equal, IS_PYPY

class TestBlockDocString(util.F2PyTest):
    code = """
      SUBROUTINE FOO()
      INTEGER BAR(2, 3)

            

Reported by Pylint.

Missing class docstring
Error

Line: 7 Column: 1

              
from numpy.testing import assert_equal, IS_PYPY

class TestBlockDocString(util.F2PyTest):
    code = """
      SUBROUTINE FOO()
      INTEGER BAR(2, 3)

      COMMON  /BLOCK/ BAR

            

Reported by Pylint.

Too few public methods (1/2)
Error

Line: 7 Column: 1

              
from numpy.testing import assert_equal, IS_PYPY

class TestBlockDocString(util.F2PyTest):
    code = """
      SUBROUTINE FOO()
      INTEGER BAR(2, 3)

      COMMON  /BLOCK/ BAR

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 21 Column: 5

                                      reason='Fails with MinGW64 Gfortran (Issue #9673)')
    @pytest.mark.xfail(IS_PYPY,
                       reason="PyPy cannot modify tp_doc after PyType_Ready")
    def test_block_docstring(self):
        expected = "bar : 'i'-array(2,3)\n"
        assert_equal(self.module.block.__doc__, expected)

            

Reported by Pylint.

numpy/random/_examples/numba/extending_distributions.py
7 issues
Unable to import 'numba'
Error

Line: 29 Column: 1

              """
import os

import numba as nb
import numpy as np
from cffi import FFI

from numpy.random import PCG64


            

Reported by Pylint.

Redefining name 'bit_generator' from outer scope (line 48)
Error

Line: 53 Column: 16

              random_standard_normal = lib.random_standard_normal


def normals(n, bit_generator):
    out = np.empty(n)
    for i in range(n):
        out[i] = random_standard_normal(bit_generator)
    return out


            

Reported by Pylint.

third party import "import numpy as np" should be placed before "import numba as nb"
Error

Line: 30 Column: 1

              import os

import numba as nb
import numpy as np
from cffi import FFI

from numpy.random import PCG64

ffi = FFI()

            

Reported by Pylint.

third party import "from cffi import FFI" should be placed before "import numba as nb"
Error

Line: 31 Column: 1

              
import numba as nb
import numpy as np
from cffi import FFI

from numpy.random import PCG64

ffi = FFI()
if os.path.exists('./distributions.dll'):

            

Reported by Pylint.

third party import "from numpy.random import PCG64" should be placed before "import numba as nb"
Error

Line: 33 Column: 1

              import numpy as np
from cffi import FFI

from numpy.random import PCG64

ffi = FFI()
if os.path.exists('./distributions.dll'):
    lib = ffi.dlopen('./distributions.dll')
elif os.path.exists('./libdistributions.so'):

            

Reported by Pylint.

Argument name "n" doesn't conform to snake_case naming style
Error

Line: 53 Column: 1

              random_standard_normal = lib.random_standard_normal


def normals(n, bit_generator):
    out = np.empty(n)
    for i in range(n):
        out[i] = random_standard_normal(bit_generator)
    return out


            

Reported by Pylint.

Missing function or method docstring
Error

Line: 53 Column: 1

              random_standard_normal = lib.random_standard_normal


def normals(n, bit_generator):
    out = np.empty(n)
    for i in range(n):
        out[i] = random_standard_normal(bit_generator)
    return out


            

Reported by Pylint.

numpy/random/_pickle.py
7 issues
Attempted relative import beyond top-level package
Error

Line: 1 Column: 1

              from .mtrand import RandomState
from ._philox import Philox
from ._pcg64 import PCG64, PCG64DXSM
from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 2 Column: 1

              from .mtrand import RandomState
from ._philox import Philox
from ._pcg64 import PCG64, PCG64DXSM
from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 3 Column: 1

              from .mtrand import RandomState
from ._philox import Philox
from ._pcg64 import PCG64, PCG64DXSM
from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 4 Column: 1

              from .mtrand import RandomState
from ._philox import Philox
from ._pcg64 import PCG64, PCG64DXSM
from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 6 Column: 1

              from ._pcg64 import PCG64, PCG64DXSM
from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,
                 'PCG64': PCG64,
                 'PCG64DXSM': PCG64DXSM,

            

Reported by Pylint.

Attempted relative import beyond top-level package
Error

Line: 7 Column: 1

              from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,
                 'PCG64': PCG64,
                 'PCG64DXSM': PCG64DXSM,
                 'Philox': Philox,

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from .mtrand import RandomState
from ._philox import Philox
from ._pcg64 import PCG64, PCG64DXSM
from ._sfc64 import SFC64

from ._generator import Generator
from ._mt19937 import MT19937

BitGenerators = {'MT19937': MT19937,

            

Reported by Pylint.

numpy/typing/tests/data/pass/lib_utils.py
7 issues
No value for argument 'value' in constructor call
Error

Line: 20 Column: 16

              np.deprecate_with_doc(None)

np.byte_bounds(AR)
np.byte_bounds(np.float64())

np.info(1, output=FILE)

np.source(np.interp, output=FILE)


            

Reported by Pylint.

Unused Any imported from typing
Error

Line: 4 Column: 1

              from __future__ import annotations

from io import StringIO
from typing import Any

import numpy as np

FILE = StringIO()
AR = np.arange(10, dtype=np.float64)

            

Reported by Pylint.

Unused argument 'a'
Error

Line: 11 Column: 10

              FILE = StringIO()
AR = np.arange(10, dtype=np.float64)

def func(a: int) -> bool: ...

np.deprecate(func)
np.deprecate()

np.deprecate_with_doc("test")

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from __future__ import annotations

from io import StringIO
from typing import Any

import numpy as np

FILE = StringIO()
AR = np.arange(10, dtype=np.float64)

            

Reported by Pylint.

Argument name "a" doesn't conform to snake_case naming style
Error

Line: 11 Column: 1

              FILE = StringIO()
AR = np.arange(10, dtype=np.float64)

def func(a: int) -> bool: ...

np.deprecate(func)
np.deprecate()

np.deprecate_with_doc("test")

            

Reported by Pylint.

Missing function or method docstring
Error

Line: 11 Column: 1

              FILE = StringIO()
AR = np.arange(10, dtype=np.float64)

def func(a: int) -> bool: ...

np.deprecate(func)
np.deprecate()

np.deprecate_with_doc("test")

            

Reported by Pylint.

More than one statement on a single line
Error

Line: 11 Column: 27

              FILE = StringIO()
AR = np.arange(10, dtype=np.float64)

def func(a: int) -> bool: ...

np.deprecate(func)
np.deprecate()

np.deprecate_with_doc("test")

            

Reported by Pylint.

numpy/typing/tests/data/fail/ndarray_misc.py
7 issues
Value 'np.ndarray' is unsubscriptable
Error

Line: 13 Column: 8

              import numpy as np

f8: np.float64
AR_f8: np.ndarray[Any, np.dtype[np.float64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_b: np.ndarray[Any, np.dtype[np.bool_]]

ctypes_obj = AR_f8.ctypes


            

Reported by Pylint.

Value 'np.ndarray' is unsubscriptable
Error

Line: 14 Column: 7

              
f8: np.float64
AR_f8: np.ndarray[Any, np.dtype[np.float64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_b: np.ndarray[Any, np.dtype[np.bool_]]

ctypes_obj = AR_f8.ctypes

reveal_type(ctypes_obj.get_data())  # E: has no attribute

            

Reported by Pylint.

Value 'np.ndarray' is unsubscriptable
Error

Line: 15 Column: 7

              f8: np.float64
AR_f8: np.ndarray[Any, np.dtype[np.float64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_b: np.ndarray[Any, np.dtype[np.bool_]]

ctypes_obj = AR_f8.ctypes

reveal_type(ctypes_obj.get_data())  # E: has no attribute
reveal_type(ctypes_obj.get_shape())  # E: has no attribute

            

Reported by Pylint.

Undefined variable 'reveal_type'
Error

Line: 19 Column: 1

              
ctypes_obj = AR_f8.ctypes

reveal_type(ctypes_obj.get_data())  # E: has no attribute
reveal_type(ctypes_obj.get_shape())  # E: has no attribute
reveal_type(ctypes_obj.get_strides())  # E: has no attribute
reveal_type(ctypes_obj.get_as_parameter())  # E: has no attribute

f8.argpartition(0)  # E: has no attribute

            

Reported by Pylint.

Undefined variable 'reveal_type'
Error

Line: 20 Column: 1

              ctypes_obj = AR_f8.ctypes

reveal_type(ctypes_obj.get_data())  # E: has no attribute
reveal_type(ctypes_obj.get_shape())  # E: has no attribute
reveal_type(ctypes_obj.get_strides())  # E: has no attribute
reveal_type(ctypes_obj.get_as_parameter())  # E: has no attribute

f8.argpartition(0)  # E: has no attribute
f8.diagonal()  # E: has no attribute

            

Reported by Pylint.

Undefined variable 'reveal_type'
Error

Line: 21 Column: 1

              
reveal_type(ctypes_obj.get_data())  # E: has no attribute
reveal_type(ctypes_obj.get_shape())  # E: has no attribute
reveal_type(ctypes_obj.get_strides())  # E: has no attribute
reveal_type(ctypes_obj.get_as_parameter())  # E: has no attribute

f8.argpartition(0)  # E: has no attribute
f8.diagonal()  # E: has no attribute
f8.dot(1)  # E: has no attribute

            

Reported by Pylint.

Undefined variable 'reveal_type'
Error

Line: 22 Column: 1

              reveal_type(ctypes_obj.get_data())  # E: has no attribute
reveal_type(ctypes_obj.get_shape())  # E: has no attribute
reveal_type(ctypes_obj.get_strides())  # E: has no attribute
reveal_type(ctypes_obj.get_as_parameter())  # E: has no attribute

f8.argpartition(0)  # E: has no attribute
f8.diagonal()  # E: has no attribute
f8.dot(1)  # E: has no attribute
f8.nonzero()  # E: has no attribute

            

Reported by Pylint.

numpy/typing/tests/data/fail/ufunclike.py
6 issues
Value 'np.ndarray' is unsubscriptable
Error

Line: 4 Column: 7

              from typing import List, Any
import numpy as np

AR_c: np.ndarray[Any, np.dtype[np.complex128]]
AR_m: np.ndarray[Any, np.dtype[np.timedelta64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_O: np.ndarray[Any, np.dtype[np.object_]]

np.fix(AR_c)  # E: incompatible type

            

Reported by Pylint.

Value 'np.ndarray' is unsubscriptable
Error

Line: 5 Column: 7

              import numpy as np

AR_c: np.ndarray[Any, np.dtype[np.complex128]]
AR_m: np.ndarray[Any, np.dtype[np.timedelta64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_O: np.ndarray[Any, np.dtype[np.object_]]

np.fix(AR_c)  # E: incompatible type
np.fix(AR_m)  # E: incompatible type

            

Reported by Pylint.

Value 'np.ndarray' is unsubscriptable
Error

Line: 6 Column: 7

              
AR_c: np.ndarray[Any, np.dtype[np.complex128]]
AR_m: np.ndarray[Any, np.dtype[np.timedelta64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_O: np.ndarray[Any, np.dtype[np.object_]]

np.fix(AR_c)  # E: incompatible type
np.fix(AR_m)  # E: incompatible type
np.fix(AR_M)  # E: incompatible type

            

Reported by Pylint.

Value 'np.ndarray' is unsubscriptable
Error

Line: 7 Column: 7

              AR_c: np.ndarray[Any, np.dtype[np.complex128]]
AR_m: np.ndarray[Any, np.dtype[np.timedelta64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_O: np.ndarray[Any, np.dtype[np.object_]]

np.fix(AR_c)  # E: incompatible type
np.fix(AR_m)  # E: incompatible type
np.fix(AR_M)  # E: incompatible type


            

Reported by Pylint.

Unused List imported from typing
Error

Line: 1 Column: 1

              from typing import List, Any
import numpy as np

AR_c: np.ndarray[Any, np.dtype[np.complex128]]
AR_m: np.ndarray[Any, np.dtype[np.timedelta64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_O: np.ndarray[Any, np.dtype[np.object_]]

np.fix(AR_c)  # E: incompatible type

            

Reported by Pylint.

Missing module docstring
Error

Line: 1 Column: 1

              from typing import List, Any
import numpy as np

AR_c: np.ndarray[Any, np.dtype[np.complex128]]
AR_m: np.ndarray[Any, np.dtype[np.timedelta64]]
AR_M: np.ndarray[Any, np.dtype[np.datetime64]]
AR_O: np.ndarray[Any, np.dtype[np.object_]]

np.fix(AR_c)  # E: incompatible type

            

Reported by Pylint.