remove unused imports automatically (#4449)

* remove unused imports automatically

* add linters to pr template

* remove useless try statement
This commit is contained in:
merwanehamadi
2023-05-28 05:50:50 -07:00
committed by GitHub
parent 78774526f4
commit ee9f10a8d8
33 changed files with 28 additions and 70 deletions

View File

@@ -36,7 +36,13 @@ By following these guidelines, your PRs are more likely to be merged quickly aft
- [ ] I have considered potential risks and mitigations for my changes. - [ ] I have considered potential risks and mitigations for my changes.
- [ ] I have documented my changes clearly and comprehensively. - [ ] I have documented my changes clearly and comprehensively.
- [ ] I have not snuck in any "extra" small tweaks changes. <!-- Submit these as separate Pull Requests, they are the easiest to merge! --> - [ ] I have not snuck in any "extra" small tweaks changes. <!-- Submit these as separate Pull Requests, they are the easiest to merge! -->
- [ ] I have run `black .` and `isort .` against my code to ensure it passes our linter. - [ ] I have run the following commands against my code to ensure it passes our linters:
```shell
black .
isort .
mypy
autoflake --remove-all-unused-imports --recursive --ignore-init-module-imports autogpt tests --in-place
```
<!-- If you haven't added tests, please explain why. If you have, check the appropriate box. If you've ensured your PR is atomic and well-documented, check the corresponding boxes. --> <!-- If you haven't added tests, please explain why. If you have, check the appropriate box. If you've ensured your PR is atomic and well-documented, check the corresponding boxes. -->

View File

@@ -51,6 +51,11 @@ jobs:
run: mypy run: mypy
if: success() || failure() if: success() || failure()
- name: Check for unused imports and pass statements
run: |
cmd="autoflake --remove-all-unused-imports --recursive --ignore-init-module-imports autogpt tests"
$cmd --check || (echo "You have unused imports or pass statements, please run '${cmd} --in-place'" && exit 1)
test: test:
permissions: permissions:
# Gives the action the necessary permissions for publishing new # Gives the action the necessary permissions for publishing new

View File

@@ -21,6 +21,7 @@ repos:
hooks: hooks:
- id: black - id: black
language_version: python3.10 language_version: python3.10
- repo: https://github.com/pre-commit/mirrors-mypy - repo: https://github.com/pre-commit/mirrors-mypy
rev: 'v1.3.0' rev: 'v1.3.0'
hooks: hooks:
@@ -28,6 +29,11 @@ repos:
- repo: local - repo: local
hooks: hooks:
- id: autoflake
name: autoflake
entry: autoflake --in-place --remove-all-unused-imports --recursive --ignore-init-module-imports autogpt tests
language: python
types: [ python ]
- id: pytest-check - id: pytest-check
name: pytest-check name: pytest-check
entry: pytest --cov=autogpt --without-integration --without-slow-integration entry: pytest --cov=autogpt --without-integration --without-slow-integration

View File

@@ -1,6 +1,6 @@
""" Command and Control """ """ Command and Control """
import json import json
from typing import Dict, List, NoReturn, Union from typing import Dict, List, Union
from autogpt.agent.agent_manager import AgentManager from autogpt.agent.agent_manager import AgentManager
from autogpt.commands.command import CommandRegistry, command from autogpt.commands.command import CommandRegistry, command

View File

@@ -1,7 +1,7 @@
import functools import functools
import importlib import importlib
import inspect import inspect
from typing import TYPE_CHECKING, Any, Callable, Optional from typing import Any, Callable, Optional
from autogpt.config import Config from autogpt.config import Config
from autogpt.logs import logger from autogpt.logs import logger

View File

@@ -2,7 +2,6 @@
import os import os
import subprocess import subprocess
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING
import docker import docker
from docker.errors import ImageNotFound from docker.errors import ImageNotFound

View File

@@ -6,7 +6,6 @@ import os
import os.path import os.path
from typing import TYPE_CHECKING, Generator, Literal from typing import TYPE_CHECKING, Generator, Literal
import charset_normalizer
import requests import requests
from colorama import Back, Fore from colorama import Back, Fore
from requests.adapters import HTTPAdapter, Retry from requests.adapters import HTTPAdapter, Retry

View File

@@ -29,7 +29,7 @@ from webdriver_manager.microsoft import EdgeChromiumDriverManager as EdgeDriverM
from autogpt.commands.command import command from autogpt.commands.command import command
from autogpt.logs import logger from autogpt.logs import logger
from autogpt.memory.vector import MemoryItem, NoMemory, get_memory from autogpt.memory.vector import MemoryItem, get_memory
from autogpt.processing.html import extract_hyperlinks, format_hyperlinks from autogpt.processing.html import extract_hyperlinks, format_hyperlinks
from autogpt.url_utils.validators import validate_url from autogpt.url_utils.validators import validate_url

View File

@@ -44,15 +44,11 @@ class ModelInfo:
class ChatModelInfo(ModelInfo): class ChatModelInfo(ModelInfo):
"""Struct for chat model information.""" """Struct for chat model information."""
pass
@dataclass @dataclass
class TextModelInfo(ModelInfo): class TextModelInfo(ModelInfo):
"""Struct for text completion model information.""" """Struct for text completion model information."""
pass
@dataclass @dataclass
class EmbeddingModelInfo(ModelInfo): class EmbeddingModelInfo(ModelInfo):

View File

@@ -1,7 +1,6 @@
from __future__ import annotations from __future__ import annotations
import time import time
from random import shuffle
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
@@ -13,7 +12,6 @@ from autogpt.llm.base import ChatSequence, Message
from autogpt.llm.utils import count_message_tokens, create_chat_completion from autogpt.llm.utils import count_message_tokens, create_chat_completion
from autogpt.log_cycle.log_cycle import CURRENT_CONTEXT_FILE_NAME from autogpt.log_cycle.log_cycle import CURRENT_CONTEXT_FILE_NAME
from autogpt.logs import logger from autogpt.logs import logger
from autogpt.memory.vector import MemoryItem, get_memory
cfg = Config() cfg = Config()

View File

@@ -1,7 +1,6 @@
from typing import Any, overload from typing import Any, overload
import numpy as np import numpy as np
import numpy.typing as npt
import openai import openai
from autogpt.config import Config from autogpt.config import Config

View File

@@ -68,7 +68,6 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate):
prompt (PromptGenerator): The prompt generator. prompt (PromptGenerator): The prompt generator.
messages (List[str]): The list of messages. messages (List[str]): The list of messages.
""" """
pass
def can_handle_post_planning(self) -> bool: def can_handle_post_planning(self) -> bool:
"""This method is called to check that the plugin can """This method is called to check that the plugin can
@@ -116,7 +115,6 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate):
Returns: Returns:
Optional[str]: The resulting message. Optional[str]: The resulting message.
""" """
pass
def can_handle_post_instruction(self) -> bool: def can_handle_post_instruction(self) -> bool:
"""This method is called to check that the plugin can """This method is called to check that the plugin can
@@ -196,7 +194,6 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate):
Returns: Returns:
str: The resulting response. str: The resulting response.
""" """
pass
def can_handle_text_embedding(self, text: str) -> bool: def can_handle_text_embedding(self, text: str) -> bool:
"""This method is called to check that the plugin can """This method is called to check that the plugin can
@@ -214,7 +211,6 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate):
Returns: Returns:
list: The text embedding. list: The text embedding.
""" """
pass
def can_handle_user_input(self, user_input: str) -> bool: def can_handle_user_input(self, user_input: str) -> bool:
"""This method is called to check that the plugin can """This method is called to check that the plugin can
@@ -237,8 +233,6 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate):
str: The user input. str: The user input.
""" """
pass
def can_handle_report(self) -> bool: def can_handle_report(self) -> bool:
"""This method is called to check that the plugin can """This method is called to check that the plugin can
handle the report method. handle the report method.
@@ -253,4 +247,3 @@ class BaseOpenAIPlugin(AutoGPTPluginTemplate):
Args: Args:
message (str): The message to report. message (str): The message to report.
""" """
pass

View File

@@ -5,7 +5,7 @@ import json
import os import os
import zipfile import zipfile
from pathlib import Path from pathlib import Path
from typing import List, Optional, Tuple from typing import List
from urllib.parse import urlparse from urllib.parse import urlparse
from zipimport import zipimporter from zipimport import zipimporter

View File

@@ -20,5 +20,3 @@ class AbstractSingleton(abc.ABC, metaclass=Singleton):
""" """
Abstract singleton class for ensuring only one instance of a class. Abstract singleton class for ensuring only one instance of a class.
""" """
pass

View File

@@ -37,7 +37,6 @@ class VoiceBase(AbstractSingleton):
""" """
Setup the voices, API key, etc. Setup the voices, API key, etc.
""" """
pass
@abc.abstractmethod @abc.abstractmethod
def _speech(self, text: str, voice_index: int = 0) -> bool: def _speech(self, text: str, voice_index: int = 0) -> bool:
@@ -47,4 +46,3 @@ class VoiceBase(AbstractSingleton):
Args: Args:
text (str): The text to play. text (str): The text to play.
""" """
pass

View File

@@ -12,7 +12,6 @@ class BrianSpeech(VoiceBase):
def _setup(self) -> None: def _setup(self) -> None:
"""Setup the voices, API key, etc.""" """Setup the voices, API key, etc."""
pass
def _speech(self, text: str, _: int = 0) -> bool: def _speech(self, text: str, _: int = 0) -> bool:
"""Speak text using Brian with the streamelements API """Speak text using Brian with the streamelements API

View File

@@ -6,15 +6,8 @@ import yaml
from colorama import Fore, Style from colorama import Fore, Style
from git.repo import Repo from git.repo import Repo
from autogpt.logs import logger
# Use readline if available (for clean_input)
try:
import readline
except ImportError:
pass
from autogpt.config import Config from autogpt.config import Config
from autogpt.logs import logger
def batch(iterable, max_batch_length: int, overlap: int = 0): def batch(iterable, max_batch_length: int, overlap: int = 0):

View File

@@ -2,7 +2,6 @@ import pytest
from _pytest.config import Config from _pytest.config import Config
from _pytest.config.argparsing import Parser from _pytest.config.argparsing import Parser
from _pytest.fixtures import FixtureRequest from _pytest.fixtures import FixtureRequest
from _pytest.monkeypatch import MonkeyPatch
def pytest_addoption(parser: Parser) -> None: def pytest_addoption(parser: Parser) -> None:

View File

@@ -1,8 +1,6 @@
import typing
import pytest import pytest
from autogpt.commands.file_operations import read_file, write_to_file from autogpt.commands.file_operations import read_file
from autogpt.config import Config from autogpt.config import Config
from tests.integration.challenges.utils import run_interaction_loop from tests.integration.challenges.utils import run_interaction_loop
from tests.utils import requires_api_key from tests.utils import requires_api_key

View File

@@ -1,7 +1,7 @@
import contextlib import contextlib
import random import random
from functools import wraps from functools import wraps
from typing import Any, Callable, Dict, Generator, Optional, Tuple from typing import Any, Callable, Dict, Generator, Tuple
import pytest import pytest

View File

@@ -1,4 +1,3 @@
import numpy
import pytest import pytest
from autogpt.memory.vector.memory_item import MemoryItem from autogpt.memory.vector.memory_item import MemoryItem

View File

@@ -3,11 +3,7 @@ from unittest.mock import patch
import pytest import pytest
from autogpt.config.ai_config import AIConfig from autogpt.config.ai_config import AIConfig
from autogpt.setup import ( from autogpt.setup import generate_aiconfig_automatic, prompt_user
generate_aiconfig_automatic,
generate_aiconfig_manual,
prompt_user,
)
from tests.utils import requires_api_key from tests.utils import requires_api_key

View File

@@ -1,7 +1,6 @@
# Date: 2023-5-13 # Date: 2023-5-13
# Author: Generated by GoCodeo. # Author: Generated by GoCodeo.
import json import json
from io import BytesIO
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
import pytest import pytest

View File

@@ -5,7 +5,6 @@ for the AI and ensures it behaves as a singleton.
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from openai import InvalidRequestError
from autogpt.configurator import create_config from autogpt.configurator import create_config

View File

@@ -7,7 +7,6 @@ import pytest
from PIL import Image from PIL import Image
from autogpt.commands.image_gen import generate_image, generate_image_with_sd_webui from autogpt.commands.image_gen import generate_image, generate_image_with_sd_webui
from autogpt.config import Config
from tests.utils import requires_api_key from tests.utils import requires_api_key

View File

@@ -1,13 +1,11 @@
import json import json
import tempfile import tempfile
from functools import partial
from unittest import TestCase from unittest import TestCase
from xml.etree import ElementTree from xml.etree import ElementTree
import docx import docx
import yaml import yaml
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from PyPDF2 import PdfWriter
from autogpt.commands.file_operations_utils import is_file_binary_fn, read_textual_file from autogpt.commands.file_operations_utils import is_file_binary_fn, read_textual_file
from autogpt.logs import logger from autogpt.logs import logger

View File

@@ -1,13 +1,10 @@
import os import os
from unittest.mock import Mock, patch from unittest.mock import patch
import pytest import pytest
import requests import requests
from colorama import Fore
from git import Repo
from autogpt.utils import ( from autogpt.utils import (
clean_input,
get_bulletin_from_web, get_bulletin_from_web,
get_current_git_branch, get_current_git_branch,
get_latest_bulletin, get_latest_bulletin,

View File

@@ -1,19 +1,11 @@
from typing import Any, Dict, List, Optional, Tuple
import pytest import pytest
from autogpt.models.base_open_ai_plugin import ( from autogpt.models.base_open_ai_plugin import BaseOpenAIPlugin
BaseOpenAIPlugin,
Message,
PromptGenerator,
)
class DummyPlugin(BaseOpenAIPlugin): class DummyPlugin(BaseOpenAIPlugin):
"""A dummy plugin for testing purposes.""" """A dummy plugin for testing purposes."""
pass
@pytest.fixture @pytest.fixture
def dummy_plugin(): def dummy_plugin():

View File

@@ -2,7 +2,6 @@
# Dependencies: # Dependencies:
# pip install pytest-mock # pip install pytest-mock
import pytest
from autogpt.commands.web_requests import scrape_links from autogpt.commands.web_requests import scrape_links

View File

@@ -1,7 +1,6 @@
from unittest import TestCase from unittest import TestCase
from autogpt.json_utils.json_fix_llm import fix_and_parse_json from autogpt.json_utils.json_fix_llm import fix_and_parse_json
from tests.utils import skip_in_ci
class TestParseJson(TestCase): class TestParseJson(TestCase):

View File

@@ -1,12 +1,9 @@
# Generated by CodiumAI # Generated by CodiumAI
import pytest
from loguru import logger
from autogpt.json_utils.json_fix_llm import ( from autogpt.json_utils.json_fix_llm import (
fix_and_parse_json, fix_and_parse_json,
fix_json_using_multiple_techniques, fix_json_using_multiple_techniques,
) )
from tests.utils import requires_api_key
""" """
Code Analysis Code Analysis

View File

@@ -1,6 +1,5 @@
import pytest import pytest
from autogpt.config import Config
from autogpt.plugins import denylist_allowlist_check, inspect_zip_for_modules from autogpt.plugins import denylist_allowlist_check, inspect_zip_for_modules
PLUGINS_TEST_DIR = "tests/unit/data/test_plugins" PLUGINS_TEST_DIR = "tests/unit/data/test_plugins"

View File

@@ -1,5 +1,4 @@
import json import json
import os
import re import re
from typing import Any, Dict, List from typing import Any, Dict, List