A library for accessing stubs in typeshed.
This project provides a way to retrieve information from
typeshed <https://www.github.com/python/typeshed>_ and from
PEP 561 <https://www.python.org/dev/peps/pep-0561/>_ stub packages.
Example use cases:
Projects for which typeshed_client could be useful include:
typeshed_client works on Python 3.7 and higher. To install it, run
python3 -m pip install typeshed_client.
The typeshed_client.finder module provides functions for finding stub files
given a module name.
Functions provided:
get_search_context(*, typeshed: Optional[Path] = None, search_path: Optional[Sequence[Path]] = None, python_executable: Optional[str] = None, version: Optional[PythonVersion] = None, platform: str = sys.platform) -> SearchContext:
Returns a SearchContexttypeshed_client.get_stub_file(module_name: str, *, search_context: Optional[SearchContext] = None) -> Optional[Path]: Returns
the path to a module's stub in typeshed. For example,
get_stub_file('typing', search_context=get_search_context(version=(2, 7))) may return
Path('/path/to/typeshed/stdlib/@python2/typing.pyi'). If there is no stub for the
module, returns None.typeshed_client.get_stub_ast has the same interface, but returns an AST
object (parsed using the standard library ast module).typeshed_client.parser collects the names defined in a stub. It provides:
typeshed_client.get_stub_names(module_name: str, *, search_context: Optional[SearchContext] = None) -> Optional[NameDict] collects the names
defined in a module, using the given Python version and platform. It
returns a NameDict, a dictionary mapping object names defined in the module
to NameInfo records.
typeshed_client.NameInfo is a namedtuple defined as:
.. code-block:: python
class NameInfo(NamedTuple):
name: str
is_exported: bool
ast: Union[ast3.AST, ImportedName, OverloadedName]
child_nodes: Optional[NameDict] = None
name is the object's name. is_exported indicates whether the name is a
part of the stub's public interface. ast is the AST node defining the name,
or a different structure if the name is imported from another module or is
overloaded. For classes, child_nodes is a dictionary containing the names
defined within the class.
The third component of this package, typeshed_client.resolver, maps names to
their definitions, even if those names are defined in other stubs.
To use the resolver, you need to instantiate the typeshed_client.Resolver
class. For example, given a resolver = typeshed_client.Resolver(), you can
call resolver.get_fully_qualified_name('collections.Set') to retrieve the
NameInfo containing the AST node defining collections.Set in typeshed.
Version 2.4.0 (September 29, 2023)
Version 2.3.0 (April 30, 2023)
__all__.append and __all__.extendVersion 2.2.0 (January 24, 2023)
if MYPYimport * in stubsVersion 2.1.0 (November 5, 2022)
typeshed_client.resolver.Module.get_dunder_all to get the contents of __all____all__ += syntaxVersion 2.0.5 (April 17, 2022)
Version 2.0.4 (March 10, 2022)
Version 2.0.3 (February 2, 2022)
Version 2.0.2 (January 28, 2022)
Version 2.0.1 (January 14, 2022)
Version 2.0.0 (December 22, 2021)
ast instead of typed_ast for parsingVersion 1.2.3 (December 12, 2021)
get_all_stub_files() in Python 3 for modules that also exist in Python 2Version 1.2.2 (December 9, 2021)
Version 1.2.1 (December 9, 2021)
Version 1.2.0 (December 6, 2021)
Version 1.1.4 (December 6, 2021)
Version 1.1.3 (November 14, 2021)
mypy_extensionsVersion 1.1.2 (November 5, 2021)
Version 1.1.1 (July 31, 2021)
Version 1.1.0 (June 24, 2021)
@python2 directoryVersion 1.0.2 (May 5, 2021)
Version 1.0.1 (April 24, 2021)
Version 1.0.0 (April 11, 2021)
Version 1.0.0rc1 (April 11, 2021)
Version 0.4 (December 2, 2019)
Version 0.3 (November 23, 2019)
Version 0.2 (May 25, 2017)
get_all_stub_files()from module import *Version 0.1 (May 4, 2017)