8000 Don't ignore missing stubs in setuptools by Avasam · Pull Request #10058 · python/typeshed · GitHub
[go: up one dir, main page]

Skip to content

Don't ignore missing stubs in setuptools #10058

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

Merged
Merged
Prev Previous commit
Next Next commit
Try to add relevant tests
  • Loading branch information
Avasam committed Apr 29, 2023
commit 6dfcf402536821d36cd9dd9aa75b0489472d3a90
54 changes: 54 additions & 0 deletions stubs/setuptools/@tests/test_cases/check_protocols.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
from __future__ import annotations

from typing import Any

from pkg_resources import (
DefaultProvider,
EggMetadata,
EggProvider,
EmptyProvider,
FileMetadata,
IMetadataProvider,
IResourceProvider,
NullProvider,
PathMetadata,
ZipProvider,
)
from setuptools.command.editable_wheel import EditableStrategy, _LinkTree, _StaticPth, _TopLevelFinder
from setuptools.config.expand import EnsurePackagesDiscovered
from setuptools.config.pyprojecttoml import _EnsurePackagesDiscovered

# We don't care about the __init__ methods, only about if an instance respects the Protocol
_: Any = object()

# Test IMetadataProvider Protocol implementers
metadata_provider: IMetadataProvider
metadata_provider = NullProvider(_)
metadata_provider = EggProvider(_)
metadata_provider = EmptyProvider()
metadata_provider = DefaultProvider(_)
metadata_provider = ZipProvider(_)
metadata_provider = FileMetadata(_)
metadata_provider = PathMetadata(_, _)
metadata_provider = EggMetadata(_)

# Test IResourceProvider Protocol implementers
resource_provider: IResourceProvider
resource_provider = NullProvider(_)
resource_provider = EggProvider(_)
resource_provider = EmptyProvider()
resource_provider = DefaultProvider(_)
resource_provider = ZipProvider(_)
resource_provider = FileMetadata(_)
resource_provider = PathMetadata(_, _)
resource_provider = EggMetadata(_)


# Test EditableStrategy Protocol implementers
editable_strategy: EditableStrategy
editable_strategy = _StaticPth(_, _, _)
editable_strategy = _LinkTree(_, _, _, _)
editable_strategy = _TopLevelFinder(_, _)
# Not EditableStrategy due to incompatible __call__ method
editable_strategy = EnsurePackagesDiscovered(_) # type: ignore
editable_strategy = _EnsurePackagesDiscovered(_, _, _) # type: ignore
12 changes: 6 additions & 6 deletions stubs/setuptools/pkg_resources/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,9 @@ def register_loader_type(loader_type: type, provider_factory: Callable[[types.Mo
def register_namespace_handler(importer_type: type, namespace_handler: _NSHandlerType) -> None: ...

class IResourceProvider(IMetadataProvider, Protocol):
def get_resource_filename(self, manager, resource_name): ...
def get_resource_stream(self, manager, resource_name): ...
def get_resource_string(self, manager, resource_name): ...
def get_resource_filename(self, manager: _IResourceManager, resource_name): ...
def get_resource_stream(self, manager: _IResourceManager, resource_name): ...
def get_resource_string(self, manager: _IResourceManager, resource_name): ...
def has_resource(self, resource_name): ...
def resource_isdir(self, resource_name): ...
def resource_listdir(self, resource_name): ...
Expand All @@ -294,9 +294,9 @@ class NullProvider:
module_path: str | None

def __init__(self, module) -> None: ...
def get_resource_filename(self, manager, resource_name) -> str: ...
def get_resource_stream(self, manager, resource_name) -> BytesIO: ...
def get_resource_string(self, manager, resource_name): ...
def get_resource_filename(self, manager: _IResourceManager, resource_name) -> str: ...
def get_resource_stream(self, manager: _IResourceManager, resource_name) -> BytesIO: ...
def get_resource_string(self, manager: _IResourceManager, resource_name): ...
def has_resource(self, resource_name) -> bool: ...
def has_metadata(self, name: str) -> bool | None: ...
def get_metadata(self, name: str) -> str: ...
Expand Down
0