-
Notifications
You must be signed in to change notification settings - Fork 126
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
migrate to hatch + move importlib hacks to own module for typing
- Loading branch information
1 parent
70fde45
commit 49a4877
Showing
11 changed files
with
175 additions
and
195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
version: 2 | ||
|
||
build: | ||
os: "ubuntu-20.04" | ||
tools: | ||
python: "3.10" | ||
|
||
sphinx: | ||
configuration: docs/conf.py | ||
|
||
python: | ||
install: | ||
- method: pip | ||
path: . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,70 @@ | ||
[build-system] | ||
requires = [ | ||
"setuptools", | ||
"setuptools-scm", | ||
"wheel", | ||
"hatchling>=1.3.1", | ||
"hatch-vcs", | ||
] | ||
build-backend = "hatchling.build" | ||
|
||
[project] | ||
name = "pluggy" | ||
description = "plugin and hook calling mechanisms for python" | ||
readme = "README.rst" | ||
license = "MIT" | ||
requires-python = ">=3.7" | ||
authors = [ | ||
{ name = "Holger Krekel", email = "[email protected]" }, | ||
] | ||
classifiers = [ | ||
"Development Status :: 6 - Mature", | ||
"Intended Audience :: Developers", | ||
"License :: OSI Approved :: MIT License", | ||
"Operating System :: MacOS :: MacOS X", | ||
"Operating System :: Microsoft :: Windows", | ||
"Operating System :: POSIX", | ||
"Programming Language :: Python :: 3", | ||
"Programming Language :: Python :: 3 :: Only", | ||
"Programming Language :: Python :: 3.6", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: Implementation :: CPython", | ||
"Programming Language :: Python :: Implementation :: PyPy", | ||
"Programming Language :: Python :: 3.10", | ||
"Topic :: Software Development :: Libraries", | ||
"Topic :: Software Development :: Testing", | ||
"Topic :: Utilities", | ||
] | ||
dependencies = [ | ||
"importlib-metadata>=0.12;python_version<\"3.8\"", | ||
] | ||
dynamic = [ | ||
"version", | ||
] | ||
|
||
[project.optional-dependencies] | ||
dev = [ | ||
"pre-commit", | ||
"tox", | ||
] | ||
testing = [ | ||
"pytest", | ||
"pytest-benchmark", | ||
] | ||
|
||
[project.urls] | ||
Homepage = "https://github.com/pytest-dev/pluggy" | ||
|
||
[tool.hatch.version] | ||
source = "vcs" | ||
|
||
[tool.hatch.build.hooks.vcs] | ||
version-file = "src/pluggy/_version.py" | ||
|
||
[tool.hatch.build.targets.sdist] | ||
include = [ | ||
"/src", | ||
] | ||
|
||
[tool.setuptools_scm] | ||
write_to = "src/pluggy/_version.py" | ||
|
||
[tool.towncrier] | ||
package = "pluggy" | ||
|
@@ -15,42 +73,19 @@ filename = "CHANGELOG.rst" | |
directory = "changelog/" | ||
title_format = "pluggy {version} ({project_date})" | ||
template = "changelog/_template.rst" | ||
|
||
[[tool.towncrier.type]] | ||
directory = "removal" | ||
name = "Deprecations and Removals" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "feature" | ||
name = "Features" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "bugfix" | ||
name = "Bug Fixes" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "vendor" | ||
name = "Vendored Libraries" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "doc" | ||
name = "Improved Documentation" | ||
showcontent = true | ||
|
||
[[tool.towncrier.type]] | ||
directory = "trivial" | ||
name = "Trivial/Internal Changes" | ||
showcontent = true | ||
type = [ | ||
{ directory = "removal", name = "Deprecations and Removals", showcontent = true }, | ||
{ directory = "feature", name = "Features", showcontent = true }, | ||
{ directory = "bugfix", name = "Bug Fixes", showcontent = true }, | ||
{ directory = "vendor", name = "Vendored Libraries", showcontent = true }, | ||
{ directory = "doc", name = "Improved Documentation", showcontent = true }, | ||
{ directory = "trivial", name = "Trivial/Internal Changes", showcontent = true }, | ||
] | ||
|
||
[tool.mypy] | ||
python_version = "3.7" | ||
mypy_path = "src" | ||
check_untyped_defs = true | ||
# Hopefully we can set this someday! | ||
# disallow_any_expr = true | ||
disallow_any_generics = true | ||
disallow_any_unimported = true | ||
disallow_subclassing_any = true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
from __future__ import annotations | ||
|
||
import sys | ||
from typing import Callable, Iterable, Any | ||
|
||
if sys.version_info >= (3, 8): | ||
from importlib.metadata import distributions | ||
else: | ||
from importlib_metadata import distributions | ||
|
||
|
||
class DistFacade: | ||
"""Emulate a pkg_resources Distribution""" | ||
|
||
# turn Any to Distribution as soon as the typing details for them fit | ||
def __init__(self, dist: Any) -> None: | ||
self._dist = dist | ||
|
||
@property | ||
def project_name(self) -> str: | ||
name: str = self.metadata["name"] | ||
return name | ||
|
||
def __getattr__(self, attr: str, default: Any | None = None) -> Any: | ||
return getattr(self._dist, attr, default) | ||
|
||
def __dir__(self) -> list[str]: | ||
return sorted(dir(self._dist) + ["_dist", "project_name"]) | ||
|
||
|
||
def iter_entrypoint_loaders( | ||
group: str, name: str | None | ||
) -> Iterable[tuple[DistFacade, str, Callable[[], object]]]: | ||
for dist in list(distributions()): | ||
legacy = DistFacade(dist) | ||
for ep in dist.entry_points: | ||
if ep.group == group and name is None or name == ep.name: | ||
yield legacy, ep.name, ep.load |
Oops, something went wrong.