Skip to content
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
207 changes: 161 additions & 46 deletions poetry.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ dependencies.python = "^3.10"
dependencies.typing-extensions = ">=4.0,<5.0"
dependencies.pytest = { version = ">=8,<10", optional = true }
dependencies.hypothesis = { version = "^6.151", optional = true }
dependencies.mypy = { version = ">=1.12,<1.18", optional = true }
dependencies.mypy = { version = ">=1.19,<1.21", optional = true }
extras.compatible-mypy = [ "mypy" ]
extras.check-laws = [ "pytest", "hypothesis" ]
group.dev.dependencies.anyio = "^4.3"
Expand Down
10 changes: 0 additions & 10 deletions returns/contrib/mypy/_features/kind.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
from collections.abc import Sequence
from enum import Enum, unique
from importlib.metadata import version
from typing import Any

from mypy.checkmember import analyze_member_access
from mypy.plugin import (
Expand Down Expand Up @@ -63,13 +61,6 @@ def attribute_access(ctx: AttributeContext) -> MypyType:
else:
return ctx.default_attr_type

mypy_version_tuple = tuple(
map(int, version('mypy').partition('+')[0].split('.'))
)

extra_kwargs: dict[str, Any] = {}
if mypy_version_tuple < (1, 16):
extra_kwargs['msg'] = ctx.api.msg
return analyze_member_access(
ctx.context.name, # type: ignore
accessed,
Expand All @@ -80,7 +71,6 @@ def attribute_access(ctx: AttributeContext) -> MypyType:
original_type=instance,
chk=ctx.api, # type: ignore
in_literal_context=ctx.api.expr_checker.is_literal_context(), # type: ignore
**extra_kwargs,
)


Expand Down
13 changes: 1 addition & 12 deletions returns/contrib/mypy/_typeops/analtype.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from collections.abc import Sequence
from importlib.metadata import version
from types import MappingProxyType
from typing import Any, Final, Literal, overload
from typing import Final, Literal, overload

from mypy.checkmember import analyze_member_access
from mypy.nodes import ARG_NAMED, ARG_OPT
Expand Down Expand Up @@ -119,15 +118,6 @@ def translate_to_function(
"""
checker = ctx.api.expr_checker # type: ignore

mypy_version = version('mypy')
mypy_version_tuple = tuple(
map(int, mypy_version.partition('+')[0].split('.'))
)

extra_kwargs: dict[str, Any] = {}
if mypy_version_tuple < (1, 16):
extra_kwargs['msg'] = checker.msg

return get_proper_type(
analyze_member_access(
'__call__',
Expand All @@ -138,6 +128,5 @@ def translate_to_function(
is_operator=True,
original_type=function_def,
chk=checker.chk,
**extra_kwargs,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def __init__(self, inner_value: Any) -> None:
def __eq__(self, other: object) -> bool:
return (
type(other) is type(self) # noqa: WPS516
and self.inner_value == other.inner_value # type: ignore[attr-defined]
and self.inner_value == other.inner_value
)

def __hash__(self) -> int:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
main: |
from returns.context import RequiresContext

reveal_type(RequiresContext[int, str].ask()) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.str, builtins.str]"
reveal_type(RequiresContext[int, str].ask()) # N: Revealed type is "returns.context.requires_context.RequiresContext[str, str]"


- case: requires_context_from_value
disable_cache: false
main: |
from returns.context import RequiresContext

reveal_type(RequiresContext.from_value(1)) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.int, Any]"
reveal_type(RequiresContext.from_value(1)) # N: Revealed type is "returns.context.requires_context.RequiresContext[int, Any]"


- case: requires_context_from_context
Expand All @@ -28,4 +28,4 @@
from returns.context import RequiresContext

x: RequiresContext[int, str]
reveal_type(RequiresContext.from_context(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.int, builtins.str]"
reveal_type(RequiresContext.from_context(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[int, str]"
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
first: RequiresContext[TypeError, int] # we can only cast return type
second: RequiresContext[Exception, int] = first

reveal_type(second) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.Exception, builtins.int]"
reveal_type(second) # N: Revealed type is "returns.context.requires_context.RequiresContext[Exception, int]"


- case: context_wrong_cast
Expand Down Expand Up @@ -46,7 +46,7 @@
reveal_type(func().bind(second))
reveal_type(func().bind(third))
out: |
main:21: note: Revealed type is "returns.context.requires_context.RequiresContext[builtins.int, main.B]"
main:21: note: Revealed type is "returns.context.requires_context.RequiresContext[int, main.B]"
main:21: error: Argument 1 to "bind" of "RequiresContext" has incompatible type "Callable[[int], RequiresContext[int, A]]"; expected "Callable[[int], KindN[RequiresContext[Any, Any], int, B, Any]]" [arg-type]
main:22: note: Revealed type is "returns.context.requires_context.RequiresContext[builtins.int, main.B]"
main:22: note: Revealed type is "returns.context.requires_context.RequiresContext[int, main.B]"
main:22: error: Argument 1 to "bind" of "RequiresContext" has incompatible type "Callable[[int], RequiresContext[int, C]]"; expected "Callable[[int], KindN[RequiresContext[Any, Any], int, B, Any]]" [arg-type]
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

first: RequiresContext[str, int]

reveal_type(first(1)) # N: Revealed type is "builtins.str"
reveal_type(first(1)) # N: Revealed type is "str"


- case: requires_context_getattr
Expand All @@ -24,7 +24,7 @@

first: RequiresContext[str, int]

reveal_type(first.map(lambda char: float(char))) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.float, builtins.int]"
reveal_type(first.map(lambda char: float(char))) # N: Revealed type is "returns.context.requires_context.RequiresContext[float, int]"


- case: requires_context_apply_correct
Expand All @@ -36,7 +36,7 @@
first: RequiresContext[str, int]
second: RequiresContext[Callable[[str], float], int]

reveal_type(first.apply(second)) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.float, builtins.int]"
reveal_type(first.apply(second)) # N: Revealed type is "returns.context.requires_context.RequiresContext[float, int]"


- case: requires_context_bind_correct
Expand All @@ -49,7 +49,7 @@
def function(arg: str) -> RequiresContext[float, int]:
return RequiresContext.from_value(1.5)

reveal_type(first.bind(function)) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.float, builtins.int]"
reveal_type(first.bind(function)) # N: Revealed type is "returns.context.requires_context.RequiresContext[float, int]"


- case: requires_context_bind_context_correct
Expand All @@ -62,7 +62,7 @@
def function(arg: str) -> RequiresContext[float, int]:
return RequiresContext.from_value(1.5)

reveal_type(first.bind_context(function)) # N: Revealed type is "returns.context.requires_context.RequiresContext[builtins.float, builtins.int]"
reveal_type(first.bind_context(function)) # N: Revealed type is "returns.context.requires_context.RequiresContext[float, int]"


- case: requires_context_modify_env
Expand All @@ -71,7 +71,7 @@
from returns.context import RequiresContext

first: RequiresContext[float, int]
reveal_type(first.modify_env(int)('1')) # N: Revealed type is "builtins.float"
reveal_type(first.modify_env(int)('1')) # N: Revealed type is "float"


- case: requires_context_call_wrong
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

x: RequiresContextIOResult[int, float, str]

reveal_type(RequiresContext.from_requires_context_ioresult(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[returns.io.IOResult[builtins.int, builtins.float], builtins.str]"
reveal_type(RequiresContext.from_requires_context_ioresult(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[returns.io.IOResult[int, float], str]"


- case: requires_context_from_requires_context_result
Expand All @@ -17,7 +17,7 @@

x: RequiresContextResult[int, float, str]

reveal_type(RequiresContext.from_requires_context_result(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[returns.result.Result[builtins.int, builtins.float], builtins.str]"
reveal_type(RequiresContext.from_requires_context_result(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[returns.result.Result[int, float], str]"


- case: requires_context_from_requires_context_future_result
Expand All @@ -28,4 +28,4 @@

x: RequiresContextFutureResult[int, float, str]

reveal_type(RequiresContext.from_requires_context_future_result(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[returns.future.FutureResult[builtins.int, builtins.float], builtins.str]"
reveal_type(RequiresContext.from_requires_context_future_result(x)) # N: Revealed type is "returns.context.requires_context.RequiresContext[returns.future.FutureResult[int, float], str]"
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@
main: |
from returns.context import RequiresContextFutureResult
reveal_type(RequiresContextFutureResult[int, bool, str].ask()) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.str, builtins.bool, builtins.str]"
reveal_type(RequiresContextFutureResult[int, bool, str].ask()) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[str, bool, str]"
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

x: RequiresContextFutureResult[int, float, str]

reveal_type(x('a')) # N: Revealed type is "returns.future.FutureResult[builtins.int, builtins.float]"
reveal_type(x('a')) # N: Revealed type is "returns.future.FutureResult[int, float]"


- case: requires_context_future_result_getattr
Expand All @@ -24,7 +24,7 @@

x: RequiresContextFutureResult[int, float, str]

reveal_type(x.swap()) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.float, builtins.int, builtins.str]"
reveal_type(x.swap()) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[float, int, str]"


- case: requires_context_future_result_map
Expand All @@ -34,7 +34,7 @@

x: RequiresContextFutureResult[int, float, str]

reveal_type(x.map(bool)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.map(bool)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_apply
Expand All @@ -46,7 +46,7 @@
x: RequiresContextFutureResult[int, float, str]
y: RequiresContextFutureResult[Callable[[int], bool], float, str]

reveal_type(x.apply(y)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.apply(y)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind
Expand All @@ -59,7 +59,7 @@
def test(param: int) -> RequiresContextFutureResult[bool, float, str]:
...

reveal_type(x.bind(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_awaitable
Expand All @@ -72,7 +72,7 @@

first: RequiresContextFutureResult[int, str, bool]

reveal_type(first.bind_awaitable(bind_awaitable)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.float, builtins.str, builtins.bool]"
reveal_type(first.bind_awaitable(bind_awaitable)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[float, str, bool]"


- case: requires_context_future_result_bind_async
Expand All @@ -85,7 +85,7 @@

first: RequiresContextFutureResult[int, str, bool]

reveal_type(first.bind_async(bind_async)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.float, builtins.str, builtins.bool]"
reveal_type(first.bind_async(bind_async)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[float, str, bool]"


- case: requires_context_future_result_bind_result
Expand All @@ -99,7 +99,7 @@
def test(param: int) -> Result[bool, float]:
...

reveal_type(x.bind_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_ioresult
Expand All @@ -113,7 +113,7 @@
def test(param: int) -> IOResult[bool, float]:
...

reveal_type(x.bind_ioresult(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_ioresult(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_io
Expand All @@ -127,7 +127,7 @@
def test(param: int) -> IO[bool]:
...

reveal_type(x.bind_io(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_io(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_future
Expand All @@ -141,7 +141,7 @@
def test(param: int) -> Future[bool]:
...

reveal_type(x.bind_future(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_future(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_future_result
Expand All @@ -155,7 +155,7 @@
def test(param: int) -> FutureResult[bool, float]:
...

reveal_type(x.bind_future_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_future_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_async_future
Expand All @@ -169,7 +169,7 @@
async def test(param: int) -> Future[bool]:
...

reveal_type(x.bind_async_future(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_async_future(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_async_future_result
Expand All @@ -183,7 +183,7 @@
async def test(param: int) -> FutureResult[bool, float]:
...

reveal_type(x.bind_async_future_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_async_future_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_context
Expand All @@ -196,7 +196,7 @@
def test(param: int) -> RequiresContext[bool, str]:
...

reveal_type(x.bind_context(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_context(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_context_result
Expand All @@ -209,7 +209,7 @@
def test(param: int) -> RequiresContextResult[bool, float, str]:
...

reveal_type(x.bind_context_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_context_result(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_bind_context_ioresult
Expand All @@ -222,7 +222,7 @@
def test(param: int) -> RequiresContextIOResult[bool, float, str]:
...

reveal_type(x.bind_context_ioresult(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.bool, builtins.float, builtins.str]"
reveal_type(x.bind_context_ioresult(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[bool, float, str]"


- case: requires_context_future_result_lash
Expand All @@ -235,7 +235,7 @@
def test(param: float) -> RequiresContextFutureResult[int, bool, str]:
...

reveal_type(x.lash(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.int, builtins.bool, builtins.str]"
reveal_type(x.lash(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[int, bool, str]"


- case: requires_context_future_result_alt
Expand All @@ -248,7 +248,7 @@
def test(param: float) -> bool:
...

reveal_type(x.alt(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[builtins.int, builtins.bool, builtins.str]"
reveal_type(x.alt(test)) # N: Revealed type is "returns.context.requires_context_future_result.RequiresContextFutureResult[int, bool, str]"


- case: requires_context_future_result_modify_env
Expand All @@ -257,4 +257,4 @@
from returns.context import RequiresContextFutureResult

first: RequiresContextFutureResult[float, bool, int]
reveal_type(first.modify_env(int)('1')) # N: Revealed type is "returns.future.FutureResult[builtins.float, builtins.bool]"
reveal_type(first.modify_env(int)('1')) # N: Revealed type is "returns.future.FutureResult[float, bool]"
Loading