diff --git a/swh/deposit/cli/__init__.py b/swh/deposit/cli/__init__.py --- a/swh/deposit/cli/__init__.py +++ b/swh/deposit/cli/__init__.py @@ -3,6 +3,8 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information +# WARNING: do not import unnecessary things here to keep cli startup time under +# control import click import logging diff --git a/swh/deposit/cli/admin.py b/swh/deposit/cli/admin.py --- a/swh/deposit/cli/admin.py +++ b/swh/deposit/cli/admin.py @@ -3,9 +3,10 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information +# WARNING: do not import unnecessary things here to keep cli startup time under +# control import click -from swh.deposit.config import setup_django_for from swh.deposit.cli import deposit @@ -26,6 +27,8 @@ @click.pass_context def admin(ctx, config_file, platform): """Server administration tasks (manipulate user or collections)""" + from swh.deposit.config import setup_django_for + # configuration happens here setup_django_for(platform, config_file=config_file) diff --git a/swh/deposit/cli/client.py b/swh/deposit/cli/client.py --- a/swh/deposit/cli/client.py +++ b/swh/deposit/cli/client.py @@ -3,18 +3,14 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information +# WARNING: do not import unnecessary things here to keep cli startup time under +# control import os import logging import sys -import tempfile -import uuid -import json -import yaml import click -import xmltodict -from swh.deposit.client import PublicApiDepositClient, MaintenanceError from swh.deposit.cli import deposit @@ -33,6 +29,8 @@ """Generate a slug (sample purposes). """ + import uuid + return str(uuid.uuid4()) @@ -70,6 +68,8 @@ Filepath to the metadata generated file """ + import xmltodict + path = os.path.join(temp_dir, "metadata.xml") # generate a metadata file with the minimum required metadata codemetadata = { @@ -102,6 +102,8 @@ password (str): User's password """ + from swh.deposit.client import PublicApiDepositClient + client = PublicApiDepositClient( {"url": url, "auth": {"username": username, "password": password},} ) @@ -403,6 +405,9 @@ https://docs.softwareheritage.org/devel/swh-deposit/getting-started.html. """ + import tempfile + from swh.deposit.client import MaintenanceError + url = _url(url) config = {} @@ -470,6 +475,8 @@ """Deposit's status """ + from swh.deposit.client import MaintenanceError + url = _url(url) logger.debug("Status deposit") try: @@ -489,6 +496,9 @@ def print_result(data, output_format): + import json + import yaml + if output_format == "json": click.echo(json.dumps(data)) elif output_format == "yaml": diff --git a/swh/deposit/tests/cli/test_client.py b/swh/deposit/tests/cli/test_client.py --- a/swh/deposit/tests/cli/test_client.py +++ b/swh/deposit/tests/cli/test_client.py @@ -144,7 +144,7 @@ metadata_path = os.path.join(tmp_path, "metadata.xml") mocker.patch( - "swh.deposit.cli.client.tempfile.TemporaryDirectory", + "tempfile.TemporaryDirectory", return_value=contextlib.nullcontext(str(tmp_path)), ) @@ -211,7 +211,7 @@ metadata_path = os.path.join(tmp_path, "metadata.xml") mocker.patch( - "swh.deposit.cli.client.tempfile.TemporaryDirectory", + "tempfile.TemporaryDirectory", return_value=contextlib.nullcontext(str(tmp_path)), ) with open(metadata_path, "a"): @@ -320,7 +320,7 @@ metadata_path = os.path.join(tmp_path, "metadata.xml") mocker.patch( - "swh.deposit.cli.client.tempfile.TemporaryDirectory", + "tempfile.TemporaryDirectory", return_value=contextlib.nullcontext(str(tmp_path)), )