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

Add ruff rules to avoid importing from typing #16040

Merged
merged 2 commits into from
Jun 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ quiet-level = 3
line-length = 79

[tool.ruff.lint]
select = ["E", "F", "W", "D201", "D204", "D206", "D207", "D208", "D209", "D210", "D211", "D214", "D215", "D300", "D301", "D403", "D405", "D406", "D407", "D408", "D409", "D410", "D411", "D412", "D414", "D418", "TCH"]
select = ["E", "F", "W", "D201", "D204", "D206", "D207", "D208", "D209", "D210", "D211", "D214", "D215", "D300", "D301", "D403", "D405", "D406", "D407", "D408", "D409", "D410", "D411", "D412", "D414", "D418", "TCH", "FA", "UP006", "UP007"]
ignore = [
# whitespace before :
"E203",
Expand Down
46 changes: 22 additions & 24 deletions python/cudf/cudf/_lib/column.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,34 @@

from __future__ import annotations

from typing import Dict, Optional, Tuple

from typing_extensions import Self

from cudf._typing import Dtype, DtypeObj, ScalarLike
from cudf.core.buffer import Buffer
from cudf.core.column import ColumnBase

class Column:
_data: Optional[Buffer]
_mask: Optional[Buffer]
_base_data: Optional[Buffer]
_base_mask: Optional[Buffer]
_data: Buffer | None
_mask: Buffer | None
_base_data: Buffer | None
_base_mask: Buffer | None
_dtype: DtypeObj
_size: int
_offset: int
_null_count: int
_children: Tuple[ColumnBase, ...]
_base_children: Tuple[ColumnBase, ...]
_distinct_count: Dict[bool, int]
_children: tuple[ColumnBase, ...]
_base_children: tuple[ColumnBase, ...]
_distinct_count: dict[bool, int]

def __init__(
self,
data: Optional[Buffer],
data: Buffer | None,
size: int,
dtype: Dtype,
mask: Optional[Buffer] = None,
offset: Optional[int] = None,
null_count: Optional[int] = None,
children: Tuple[ColumnBase, ...] = (),
mask: Buffer | None = None,
offset: int | None = None,
null_count: int | None = None,
children: tuple[ColumnBase, ...] = (),
) -> None: ...
@property
def base_size(self) -> int: ...
Expand All @@ -40,35 +38,35 @@ class Column:
@property
def size(self) -> int: ...
@property
def base_data(self) -> Optional[Buffer]: ...
def base_data(self) -> Buffer | None: ...
@property
def data(self) -> Optional[Buffer]: ...
def data(self) -> Buffer | None: ...
@property
def data_ptr(self) -> int: ...
def set_base_data(self, value: Buffer) -> None: ...
@property
def nullable(self) -> bool: ...
def has_nulls(self, include_nan: bool = False) -> bool: ...
@property
def base_mask(self) -> Optional[Buffer]: ...
def base_mask(self) -> Buffer | None: ...
@property
def mask(self) -> Optional[Buffer]: ...
def mask(self) -> Buffer | None: ...
@property
def mask_ptr(self) -> int: ...
def set_base_mask(self, value: Optional[Buffer]) -> None: ...
def set_mask(self, value: Optional[Buffer]) -> Self: ...
def set_base_mask(self, value: Buffer | None) -> None: ...
def set_mask(self, value: Buffer | None) -> Self: ...
@property
def null_count(self) -> int: ...
@property
def offset(self) -> int: ...
@property
def base_children(self) -> Tuple[ColumnBase, ...]: ...
def base_children(self) -> tuple[ColumnBase, ...]: ...
@property
def children(self) -> Tuple[ColumnBase, ...]: ...
def set_base_children(self, value: Tuple[ColumnBase, ...]) -> None: ...
def children(self) -> tuple[ColumnBase, ...]: ...
def set_base_children(self, value: tuple[ColumnBase, ...]) -> None: ...
def _mimic_inplace(
self, other_col: ColumnBase, inplace=False
) -> Optional[Self]: ...
) -> Self | None: ...

# TODO: The val parameter should be Scalar, not ScalarLike
@staticmethod
Expand Down
4 changes: 2 additions & 2 deletions python/cudf/cudf/api/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from collections import abc
from functools import wraps
from inspect import isclass
from typing import List, Union, cast
from typing import cast

import cupy as cp
import numpy as np
Expand Down Expand Up @@ -219,7 +219,7 @@ def wrapped_func(obj):


def _union_categoricals(
to_union: List[Union[cudf.Series, cudf.CategoricalIndex]],
to_union: list[cudf.Series | cudf.CategoricalIndex],
sort_categories: bool = False,
ignore_order: bool = False,
):
Expand Down
6 changes: 3 additions & 3 deletions python/cudf/cudf/core/_base_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import pickle
import warnings
from functools import cached_property
from typing import TYPE_CHECKING, Any, Literal, Set, Tuple
from typing import TYPE_CHECKING, Any, Literal

import pandas as pd
from typing_extensions import Self
Expand Down Expand Up @@ -44,11 +44,11 @@
class BaseIndex(Serializable):
"""Base class for all cudf Index types."""

_accessors: Set[Any] = set()
_accessors: set[Any] = set()
_data: ColumnAccessor

@property
def _columns(self) -> Tuple[Any, ...]:
def _columns(self) -> tuple[Any, ...]:
raise NotImplementedError

@cached_property
Expand Down
12 changes: 6 additions & 6 deletions python/cudf/cudf/core/_internals/expressions.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Copyright (c) 2022-2023, NVIDIA CORPORATION.
# Copyright (c) 2022-2024, NVIDIA CORPORATION.
from __future__ import annotations

import ast
import functools
from typing import List, Tuple

from cudf._lib.expressions import (
ASTOperator,
Expand Down Expand Up @@ -98,9 +98,9 @@ class libcudfASTVisitor(ast.NodeVisitor):
The column names used to map the names in an expression.
"""

def __init__(self, col_names: Tuple[str]):
self.stack: List[Expression] = []
self.nodes: List[Expression] = []
def __init__(self, col_names: tuple[str]):
self.stack: list[Expression] = []
self.nodes: list[Expression] = []
self.col_names = col_names

@property
Expand Down Expand Up @@ -218,7 +218,7 @@ def visit_Call(self, node):


@functools.lru_cache(256)
def parse_expression(expr: str, col_names: Tuple[str]):
def parse_expression(expr: str, col_names: tuple[str]):
visitor = libcudfASTVisitor(col_names)
visitor.visit(ast.parse(expr))
return visitor
19 changes: 11 additions & 8 deletions python/cudf/cudf/core/_internals/timezones.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
# Copyright (c) 2023-2024, NVIDIA CORPORATION.
from __future__ import annotations

import os
import zoneinfo
from functools import lru_cache
from typing import Literal, Tuple
from typing import TYPE_CHECKING, Literal

import numpy as np

from cudf._lib.timezone import make_timezone_transition_table
from cudf.core.column.column import as_column
from cudf.core.column.datetime import DatetimeColumn
from cudf.core.column.timedelta import TimeDeltaColumn

if TYPE_CHECKING:
from cudf.core.column.datetime import DatetimeColumn
from cudf.core.column.timedelta import TimeDeltaColumn


@lru_cache(maxsize=20)
def get_tz_data(zone_name: str) -> Tuple[DatetimeColumn, TimeDeltaColumn]:
def get_tz_data(zone_name: str) -> tuple[DatetimeColumn, TimeDeltaColumn]:
"""
Return timezone data (transition times and UTC offsets) for the
given IANA time zone.
Expand All @@ -40,7 +43,7 @@ def get_tz_data(zone_name: str) -> Tuple[DatetimeColumn, TimeDeltaColumn]:

def _find_and_read_tzfile_tzpath(
zone_name: str,
) -> Tuple[DatetimeColumn, TimeDeltaColumn]:
) -> tuple[DatetimeColumn, TimeDeltaColumn]:
for search_path in zoneinfo.TZPATH:
if os.path.isfile(os.path.join(search_path, zone_name)):
return _read_tzfile_as_columns(search_path, zone_name)
Expand All @@ -49,7 +52,7 @@ def _find_and_read_tzfile_tzpath(

def _find_and_read_tzfile_tzdata(
zone_name: str,
) -> Tuple[DatetimeColumn, TimeDeltaColumn]:
) -> tuple[DatetimeColumn, TimeDeltaColumn]:
import importlib.resources

package_base = "tzdata.zoneinfo"
Expand Down Expand Up @@ -78,7 +81,7 @@ def _find_and_read_tzfile_tzdata(

def _read_tzfile_as_columns(
tzdir, zone_name: str
) -> Tuple[DatetimeColumn, TimeDeltaColumn]:
) -> tuple[DatetimeColumn, TimeDeltaColumn]:
transition_times_and_offsets = make_timezone_transition_table(
tzdir, zone_name
)
Expand All @@ -92,7 +95,7 @@ def _read_tzfile_as_columns(

def check_ambiguous_and_nonexistent(
ambiguous: Literal["NaT"], nonexistent: Literal["NaT"]
) -> Tuple[Literal["NaT"], Literal["NaT"]]:
) -> tuple[Literal["NaT"], Literal["NaT"]]:
if ambiguous != "NaT":
raise NotImplementedError(
"Only ambiguous='NaT' is currently supported"
Expand Down
15 changes: 9 additions & 6 deletions python/cudf/cudf/core/_internals/where.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# Copyright (c) 2021-2023, NVIDIA CORPORATION.
# Copyright (c) 2021-2024, NVIDIA CORPORATION.
from __future__ import annotations

import warnings
from typing import Tuple, Union
from typing import TYPE_CHECKING

import numpy as np

import cudf
from cudf._typing import ScalarLike
from cudf.api.types import (
_is_non_decimal_numeric_dtype,
is_bool_dtype,
is_scalar,
)
from cudf.core.column import ColumnBase
from cudf.core.dtypes import CategoricalDtype
from cudf.utils.dtypes import (
_can_cast,
Expand All @@ -21,6 +20,10 @@
is_mixed_with_object_dtype,
)

if TYPE_CHECKING:
from cudf._typing import ScalarLike
from cudf.core.column import ColumnBase


def _normalize_categorical(input_col, other):
if isinstance(input_col, cudf.core.column.CategoricalColumn):
Expand All @@ -41,9 +44,9 @@ def _normalize_categorical(input_col, other):

def _check_and_cast_columns_with_other(
source_col: ColumnBase,
other: Union[ScalarLike, ColumnBase],
other: ScalarLike | ColumnBase,
inplace: bool,
) -> Tuple[ColumnBase, Union[ScalarLike, ColumnBase]]:
) -> tuple[ColumnBase, ScalarLike | ColumnBase]:
# Returns type-casted `source_col` & `other` based on `inplace`.
source_dtype = source_col.dtype
if isinstance(source_dtype, CategoricalDtype):
Expand Down
14 changes: 7 additions & 7 deletions python/cudf/cudf/core/buffer/buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pickle
import weakref
from types import SimpleNamespace
from typing import Any, Dict, Literal, Mapping, Optional, Tuple
from typing import Any, Literal, Mapping

import numpy
from typing_extensions import Self
Expand Down Expand Up @@ -42,7 +42,7 @@ def host_memory_allocation(nbytes: int) -> memoryview:
def cuda_array_interface_wrapper(
ptr: int,
size: int,
owner: Optional[object] = None,
owner: object | None = None,
readonly=False,
typestr="|u1",
version=0,
Expand Down Expand Up @@ -278,7 +278,7 @@ def get_ptr(self, *, mode: Literal["read", "write"]) -> int:
return self._ptr

def memoryview(
self, *, offset: int = 0, size: Optional[int] = None
self, *, offset: int = 0, size: int | None = None
) -> memoryview:
"""Read-only access to the buffer through host memory."""
size = self._size if size is None else size
Expand Down Expand Up @@ -319,7 +319,7 @@ def __init__(
*,
owner: BufferOwner,
offset: int = 0,
size: Optional[int] = None,
size: int | None = None,
) -> None:
size = owner.size if size is None else size
if size < 0:
Expand Down Expand Up @@ -414,7 +414,7 @@ def __cuda_array_interface__(self) -> Mapping:
"version": 0,
}

def serialize(self) -> Tuple[dict, list]:
def serialize(self) -> tuple[dict, list]:
"""Serialize the buffer into header and frames.

The frames can be a mixture of memoryview, Buffer, and BufferOwner
Expand All @@ -427,7 +427,7 @@ def serialize(self) -> Tuple[dict, list]:
serializable metadata required to reconstruct the object. The
second element is a list containing single frame.
"""
header: Dict[str, Any] = {}
header: dict[str, Any] = {}
header["type-serialized"] = pickle.dumps(type(self))
header["owner-type-serialized"] = pickle.dumps(type(self._owner))
header["frame_count"] = 1
Expand Down Expand Up @@ -480,7 +480,7 @@ def __str__(self) -> str:
)


def get_ptr_and_size(array_interface: Mapping) -> Tuple[int, int]:
def get_ptr_and_size(array_interface: Mapping) -> tuple[int, int]:
"""Retrieve the pointer and size from an array interface.

Raises ValueError if array isn't C-contiguous.
Expand Down
4 changes: 2 additions & 2 deletions python/cudf/cudf/core/buffer/exposure_tracked_buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from __future__ import annotations

from typing import Literal, Mapping, Optional
from typing import Literal, Mapping

from typing_extensions import Self

Expand All @@ -27,7 +27,7 @@ def __init__(
self,
owner: BufferOwner,
offset: int = 0,
size: Optional[int] = None,
size: int | None = None,
) -> None:
super().__init__(owner=owner, offset=offset, size=size)
self.owner._slices.add(self)
Expand Down
Loading
Loading