Remove arcade.core from all examples (#121)

This PR ensures that `arcade.core` does not show up anywhere in "user
space". This is crucial for helping developers understand what objects
are safe to use, and helps maintain a good developer experience.

Specific changes:
- `ToolAuthorizationContext` and `ToolContext` are now visible via
`arcade.sdk`
- `ToolCatalog` is now visible via `arcade.sdk`
- `Toolkit` is now visible via `arcade.sdk`
- `config` is now visible via `arcade.sdk.config`
This commit is contained in:
Nate Barbettini 2024-10-24 17:08:04 -07:00 committed by GitHub
parent c528b2c7dc
commit 036ad54ac6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
51 changed files with 81 additions and 86 deletions

View file

@ -169,7 +169,7 @@ def create_new_toolkit(directory: str) -> None:
dedent(
f"""
import pytest
from arcade.sdk.error import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
from {toolkit_name}.tools.hello import hello
def test_hello():
@ -195,7 +195,7 @@ def create_new_toolkit(directory: str) -> None:
import {toolkit_name}
from {toolkit_name}.tools.hello import hello
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
EvalRubric,
EvalSuite,

View file

@ -24,7 +24,7 @@ except ImportError:
)
from arcade.actor.fastapi.actor import FastAPIActor
from arcade.core.toolkit import Toolkit
from arcade.sdk import Toolkit
class InterceptHandler(logging.Handler):

View file

@ -22,11 +22,10 @@ from rich.text import Text
from typer.core import TyperGroup
from typer.models import Context
from arcade.core.catalog import ToolCatalog
from arcade.core.config_model import Config
from arcade.core.errors import ToolkitLoadError
from arcade.core.schema import ToolDefinition
from arcade.core.toolkit import Toolkit
from arcade.sdk import ToolCatalog, Toolkit
console = Console()

View file

@ -219,8 +219,7 @@ class ToolCatalog(BaseModel):
def get_tool_by_name(
self, name: str, version: Optional[str] = None, separator: str = TOOL_NAME_SEPARATOR
) -> MaterializedTool:
"""
Get a tool from the catalog by name, optionally including the toolkit name.
"""Get a tool from the catalog by name.
Args:
name: The name of the tool, potentially including the toolkit name separated by the `separator`.

View file

@ -1,5 +1,13 @@
from arcade.core.catalog import ToolCatalog
from arcade.core.schema import ToolAuthorizationContext, ToolContext
from arcade.core.toolkit import Toolkit
from .tool import tool
__all__ = [
"tool",
"ToolAuthorizationContext",
"ToolContext",
"ToolCatalog",
"Toolkit",
]

View file

@ -1,6 +1,12 @@
from arcade.core.errors import RetryableToolError, ToolExecutionError
from arcade.core.errors import RetryableToolError, ToolExecutionError, ToolRuntimeError
__all__ = ["SDKError", "WeightError", "ToolExecutionError", "RetryableToolError"]
__all__ = [
"SDKError",
"WeightError",
"ToolRuntimeError",
"ToolExecutionError",
"RetryableToolError",
]
class SDKError(Exception):

View file

@ -6,7 +6,7 @@ from typing import Any, ClassVar
import pytz
from dateutil import parser
from arcade.sdk.error import WeightError
from arcade.sdk.errors import WeightError
@dataclass

View file

@ -18,10 +18,10 @@ except ImportError:
from openai import AsyncOpenAI
from arcade.sdk.error import WeightError
from arcade.sdk.errors import WeightError
if TYPE_CHECKING:
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval.critic import Critic

View file

@ -4,7 +4,7 @@ from typing import Any, Callable, TypeVar, Union
from arcade.core.utils import snake_to_pascal_case
from arcade.sdk.auth import ToolAuthorization
from arcade.sdk.error import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
T = TypeVar("T")

View file

@ -6,7 +6,7 @@ from arcade.core.catalog import ToolCatalog
from arcade.core.executor import ToolExecutor
from arcade.core.schema import ToolCallError, ToolCallOutput, ToolContext
from arcade.sdk import tool
from arcade.sdk.error import RetryableToolError, ToolExecutionError
from arcade.sdk.errors import RetryableToolError, ToolExecutionError
@tool

View file

@ -4,7 +4,7 @@ import pytest
import pytz
from dateutil import parser
from arcade.sdk.error import WeightError
from arcade.sdk.errors import WeightError
from arcade.sdk.eval import (
BinaryCritic,
DatetimeCritic,

View file

@ -6,13 +6,9 @@ from openai import AsyncOpenAI
from pydantic import BaseModel
from arcade.actor.fastapi.actor import FastAPIActor
from arcade.core.config import config
from arcade.core.toolkit import Toolkit
from arcade.sdk import Toolkit
if not config.api or not config.api.key:
raise ValueError("Arcade API key not set. Please run `arcade login`.")
client = AsyncOpenAI(api_key=config.api.key, base_url="http://localhost:9099/v1")
client = AsyncOpenAI(api_key=os.environ["ARCADE_API_KEY"], base_url="http://localhost:9099/v1")
app = FastAPI()
@ -23,6 +19,7 @@ actor.register_toolkit(Toolkit.from_module(arcade_math))
class ChatRequest(BaseModel):
message: str
user_id: str
@app.post("/chat")
@ -46,7 +43,7 @@ async def postChat(request: ChatRequest, tool_choice: str = "execute"):
# "Slack.SendMessageToChannel",
],
tool_choice=tool_choice,
user=config.user.email if config.user else None,
user=request.user_id,
)
except Exception as e:

View file

@ -29,7 +29,7 @@ def fastapi_app():
from fastapi import FastAPI
from arcade.actor.fastapi.actor import FastAPIActor
from arcade.core.toolkit import Toolkit
from arcade.sdk import Toolkit
web_app = FastAPI()

View file

@ -4,7 +4,7 @@ import pytest
from arcade_github.tools.activity import set_starred
from httpx import Response
from arcade.core.errors import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -4,7 +4,7 @@ import pytest
from arcade_github.tools.issues import create_issue, create_issue_comment
from httpx import Response
from arcade.core.errors import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -16,7 +16,7 @@ from arcade_github.tools.pull_requests import (
)
from httpx import Response
from arcade.core.errors import RetryableToolError, ToolExecutionError
from arcade.sdk.errors import RetryableToolError, ToolExecutionError
@pytest.fixture

View file

@ -11,7 +11,7 @@ from arcade_github.tools.repositories import (
)
from httpx import Response
from arcade.core.errors import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -2,8 +2,7 @@ from typing import Annotated
import httpx
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import GitHub
from arcade_github.tools.utils import get_github_json_headers, get_url, handle_github_response

View file

@ -3,8 +3,7 @@ from typing import Annotated, Optional
import httpx
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import GitHub
from arcade_github.tools.utils import (
get_github_json_headers,

View file

@ -3,10 +3,9 @@ from typing import Annotated, Optional
import httpx
from arcade.core.errors import RetryableToolError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import GitHub
from arcade.sdk.errors import RetryableToolError
from arcade_github.tools.models import (
DiffSide,
PRSortProperty,

View file

@ -3,8 +3,7 @@ from typing import Annotated, Optional
import httpx
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import GitHub
from arcade_github.tools.models import (
ActivityType,

View file

@ -1,4 +1,4 @@
from arcade.core.errors import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
from arcade_github.tools.constants import ENDPOINTS, GITHUB_API_BASE_URL

View file

@ -1,7 +1,7 @@
import arcade_github
from arcade_github.tools.activity import set_starred
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -4,7 +4,7 @@ from arcade_github.tools.issues import (
create_issue_comment,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -14,7 +14,7 @@ from arcade_github.tools.pull_requests import (
update_pull_request,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -8,7 +8,7 @@ from arcade_github.tools.repositories import (
list_review_comments_in_a_repository,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -5,10 +5,9 @@ from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from arcade.core.errors import RetryableToolError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Google
from arcade.sdk.errors import RetryableToolError
from arcade_google.tools.models import EventVisibility, SendUpdatesOptions
from arcade_google.tools.utils import parse_datetime

View file

@ -1,7 +1,6 @@
from typing import Annotated
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Google
from arcade_google.tools.utils import build_docs_service

View file

@ -1,7 +1,6 @@
from typing import Annotated, Optional
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Google
from arcade_google.tools.utils import build_drive_service, remove_none_values

View file

@ -8,10 +8,9 @@ from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Google
from arcade.sdk.error import RetryableToolError
from arcade.sdk.errors import RetryableToolError
from arcade_google.tools.utils import (
DateRange,
build_query_string,

View file

@ -10,7 +10,7 @@ from arcade_google.tools.calendar import (
update_event,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
DatetimeCritic,

View file

@ -6,7 +6,7 @@ from arcade_google.tools.docs import (
insert_text_at_end_of_document,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -2,7 +2,7 @@ import arcade_google
from arcade_google.tools.drive import list_documents
from arcade_google.tools.models import Corpora, OrderBy
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -3,7 +3,7 @@ from arcade_google.tools.gmail import (
send_email,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -5,8 +5,8 @@ from arcade_google.tools.calendar import create_event, delete_event, list_events
from arcade_google.tools.models import EventVisibility, SendUpdatesOptions
from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolAuthorizationContext, ToolContext
from arcade.sdk import ToolAuthorizationContext, ToolContext
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -10,7 +10,7 @@ from arcade_google.tools.docs import (
from arcade_google.tools.utils import build_docs_service
from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -6,7 +6,7 @@ from arcade_google.tools.models import Corpora, OrderBy
from arcade_google.tools.utils import build_drive_service
from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -16,8 +16,8 @@ from arcade_google.tools.gmail import (
from arcade_google.tools.utils import parse_draft_email, parse_email
from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolAuthorizationContext, ToolContext
from arcade.sdk import ToolAuthorizationContext, ToolContext
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -2,10 +2,9 @@ from typing import Annotated
import httpx
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import LinkedIn
from arcade.sdk.errors import ToolExecutionError
LINKEDIN_BASE_URL = "https://api.linkedin.com/v2"

View file

@ -1,7 +1,7 @@
import arcade_math
from arcade_math.tools.arithmetic import add, sqrt
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -9,7 +9,7 @@ from arcade_math.tools.arithmetic import (
sum_range,
)
from arcade.sdk.error import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
def test_add():

View file

@ -1,7 +1,7 @@
import arcade_search
from arcade_search.tools.google import search_google
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
EvalRubric,
EvalSuite,

View file

@ -3,10 +3,9 @@ from typing import Annotated
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from arcade.core.errors import RetryableToolError, ToolExecutionError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Slack
from arcade.sdk.errors import RetryableToolError, ToolExecutionError
@tool(

View file

@ -1,7 +1,7 @@
import arcade_slack
from arcade_slack.tools.chat import send_dm_to_user, send_message_to_channel
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -2,10 +2,9 @@ from typing import Annotated, Optional
import httpx
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Spotify
from arcade.sdk.errors import ToolExecutionError
SPOTIFY_BASE_URL = "https://api.spotify.com/v1"

View file

@ -8,7 +8,7 @@ from arcade_web.tools.firecrawl import (
scrape_url,
)
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
BinaryCritic,
EvalRubric,

View file

@ -10,7 +10,7 @@ from arcade_web.tools.firecrawl import (
scrape_url,
)
from arcade.sdk.error import ToolExecutionError
from arcade.sdk.errors import ToolExecutionError
@pytest.fixture

View file

@ -2,10 +2,9 @@ from typing import Annotated
import httpx
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import X
from arcade.sdk.errors import ToolExecutionError
from arcade_x.tools.utils import (
expand_urls_in_tweets,
get_tweet_url,

View file

@ -2,10 +2,9 @@ from typing import Annotated
import httpx
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import X
from arcade.sdk.errors import ToolExecutionError
from arcade_x.tools.utils import expand_urls_in_user_description, expand_urls_in_user_url

View file

@ -6,7 +6,7 @@ from arcade_x.tools.tweets import post_tweet
# search_recent_tweets_by_keywords,
# search_recent_tweets_by_username,
# from arcade_x.tools.users import lookup_single_user_by_username
from arcade.core.catalog import ToolCatalog
from arcade.sdk import ToolCatalog
from arcade.sdk.eval import (
EvalRubric,
EvalSuite,

View file

@ -2,10 +2,9 @@ from typing import Annotated, Optional
import httpx
from arcade.core.errors import ToolExecutionError
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk import ToolContext, tool
from arcade.sdk.auth import Zoom
from arcade.sdk.errors import ToolExecutionError
ZOOM_BASE_URL = "https://api.zoom.us/v2"