Skip to content
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

Remove straight.plugin dependency #80084

Merged
merged 1 commit into from Feb 23, 2023
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions changelogs/fragments/build-no-straight.yaml
@@ -0,0 +1,2 @@
minor_changes:
- Removed ``straight.plugin`` from the build and packaging requirements.
1 change: 0 additions & 1 deletion docs/docsite/requirements.txt
Expand Up @@ -15,4 +15,3 @@ sphinx-intl
sphinx-ansible-theme >= 0.9.1
sphinx
resolvelib
straight.plugin # Needed for hacking/build-ansible.py which is the backend build script
33 changes: 30 additions & 3 deletions hacking/build-ansible.py
Expand Up @@ -10,16 +10,20 @@


import argparse
import importlib
import inspect
import os.path
import pkgutil
import sys

from straight.plugin import load
import typing as t

try:
import argcomplete
except ImportError:
argcomplete = None

C = t.TypeVar('C')


def build_lib_path(this_script=__file__):
"""Return path to the common build library directory."""
Expand Down Expand Up @@ -55,6 +59,27 @@ def create_arg_parser(program_name):
return parser


def load(package: str, subclasses: t.Type[C]) -> list[t.Type[C]]:
"""Load modules in the specified package and return concrete types that derive from the specified base class."""
for module in pkgutil.iter_modules(importlib.import_module(package).__path__, f'{package}.'):
try:
importlib.import_module(module.name)
except ImportError:
pass # ignore plugins which are missing dependencies

types: set[t.Type[C]] = set()
queue: list[t.Type[C]] = [subclasses]

while queue:
for child in queue.pop().__subclasses__():
queue.append(child)

if not inspect.isabstract(child):
types.add(child)

return sorted(types, key=lambda sc: sc.__name__)


def main():
"""
Start our run.
Expand All @@ -69,7 +94,9 @@ def main():
help='Show tracebacks and other debugging information')
subparsers = arg_parser.add_subparsers(title='Subcommands', dest='command',
help='for help use build-ansible.py SUBCOMMANDS -h')
subcommands.pipe('init_parser', subparsers.add_parser)

for subcommand in subcommands:
subcommand.init_parser(subparsers.add_parser)

if argcomplete:
argcomplete.autocomplete(arg_parser)
Expand Down
1 change: 0 additions & 1 deletion packaging/pep517_backend/_backend.py
Expand Up @@ -103,6 +103,5 @@ def get_requires_for_build_sdist(
) + [
'docutils', # provides `rst2man`
'jinja2', # used in `hacking/build-ansible.py generate-man`
'straight.plugin', # used in `hacking/build-ansible.py` for subcommand
'pyyaml', # needed for importing in-tree `ansible-core` from `lib/`
]
Expand Up @@ -13,4 +13,3 @@ docutils == 0.16
Jinja2 == 3.0.0
MarkupSafe == 2.0.0
PyYAML == 5.3
straight.plugin == 1.4.2
Expand Up @@ -8,4 +8,3 @@ docutils == 0.19
Jinja2 == 3.1.2
MarkupSafe == 2.1.2
PyYAML == 6.0
straight.plugin == 1.5.0 # WARNING: v1.5.0 doesn't have a Git tag / src
1 change: 0 additions & 1 deletion test/sanity/code-smell/docs-build.requirements.in
Expand Up @@ -4,6 +4,5 @@ resolvelib < 0.10.0
sphinx == 5.3.0
sphinx-notfound-page
sphinx-ansible-theme
straight.plugin
rstcheck < 6 # rstcheck 6.x has problem with rstcheck.core triggered by include files w/ sphinx directives https://github.com/rstcheck/rstcheck-core/issues/3
antsibull-docs == 1.9.0 # currently approved version
1 change: 0 additions & 1 deletion test/sanity/code-smell/docs-build.requirements.txt
Expand Up @@ -44,7 +44,6 @@ sphinxcontrib-jquery==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
straight.plugin==1.5.0
Twiggy==0.5.1
types-docutils==0.18.3
typing_extensions==4.5.0
Expand Down
1 change: 0 additions & 1 deletion test/sanity/code-smell/package-data.requirements.in
Expand Up @@ -3,5 +3,4 @@ jinja2
pyyaml # ansible-core requirement
resolvelib < 0.10.0
rstcheck < 6 # match version used in other sanity tests
straight.plugin
antsibull-changelog
1 change: 0 additions & 1 deletion test/sanity/code-smell/package-data.requirements.txt
Expand Up @@ -8,6 +8,5 @@ PyYAML==6.0
resolvelib==0.9.0
rstcheck==5.0.0
semantic-version==2.10.0
straight.plugin==1.5.0
types-docutils==0.18.3
typing_extensions==4.5.0