Skip to content

Commit

Permalink
decouple types.DynamicClassAttribute from property
Browse files Browse the repository at this point in the history
  • Loading branch information
tungol committed Dec 21, 2024
1 parent 9497f8a commit 03cc7f8
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 10 deletions.
2 changes: 0 additions & 2 deletions stdlib/@tests/stubtest_allowlists/py310.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ posixpath.join
ntpath.join
os.path.join

types.DynamicClassAttribute..* # In the stub we pretend it's an alias for property, but it has positional-only differences

# typing.IO uses positional-or-keyword arguments, but in the stubs we prefer
# to mark these as positional-only for compatibility with existing sub-classes.
typing(_extensions)?\.BinaryIO\.write
Expand Down
2 changes: 0 additions & 2 deletions stdlib/@tests/stubtest_allowlists/py311.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ posixpath.join
ntpath.join
os.path.join

types.DynamicClassAttribute..* # In the stub we pretend it's an alias for property, but it has positional-only differences

# typing.IO uses positional-or-keyword arguments, but in the stubs we prefer
# to mark these as positional-only for compatibility with existing sub-classes.
typing(_extensions)?\.BinaryIO\.write
Expand Down
2 changes: 0 additions & 2 deletions stdlib/@tests/stubtest_allowlists/py312.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ posixpath.join
ntpath.join
os.path.join

types.DynamicClassAttribute..* # In the stub we pretend it's an alias for property, but it has positional-only differences

# typing.IO uses positional-or-keyword arguments, but in the stubs we prefer
# to mark these as positional-only for compatibility with existing sub-classes.
typing(_extensions)?\.BinaryIO\.write
Expand Down
2 changes: 0 additions & 2 deletions stdlib/@tests/stubtest_allowlists/py313.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@ posixpath.join
ntpath.join
os.path.join

types.DynamicClassAttribute..* # In the stub we pretend it's an alias for property, but it has positional-only differences

# typing.IO uses positional-or-keyword arguments, but in the stubs we prefer
# to mark these as positional-only for compatibility with existing sub-classes.
typing(_extensions)?\.BinaryIO\.write
Expand Down
21 changes: 19 additions & 2 deletions stdlib/types.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -583,8 +583,25 @@ def prepare_class(
if sys.version_info >= (3, 12):
def get_original_bases(cls: type, /) -> tuple[Any, ...]: ...

# Actually a different type, but `property` is special and we want that too.
DynamicClassAttribute = property
class DynamicClassAttribute:
fget: Callable[[Any], Any] | None
fset: Callable[[Any, Any], None] | None
fdel: Callable[[Any], None] | None
overwrite_doc: bool
__isabstractmethod__: bool
def __init__(
self,
fget: Callable[[Any], Any] | None = None,
fset: Callable[[Any, Any], None] | None = None,
fdel: Callable[[Any], None] | None = None,
doc: str | None = None,
) -> None: ...
def __get__(self, instance: Any, ownerclass: type | None = None) -> Any: ...
def __set__(self, instance: Any, value: Any) -> None: ...
def __delete__(self, instance: Any) -> None: ...
def getter(self, fget: Callable[[Any], Any]) -> DynamicClassAttribute: ...
def setter(self, fset: Callable[[Any, Any], None]) -> DynamicClassAttribute: ...
def deleter(self, fdel: Callable[[Any], None]) -> DynamicClassAttribute: ...

_Fn = TypeVar("_Fn", bound=Callable[..., object])
_R = TypeVar("_R")
Expand Down

0 comments on commit 03cc7f8

Please sign in to comment.