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

View file

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

View file

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

View file

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

View file

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

View file

@ -18,10 +18,10 @@ except ImportError:
from openai import AsyncOpenAI from openai import AsyncOpenAI
from arcade.sdk.error import WeightError from arcade.sdk.errors import WeightError
if TYPE_CHECKING: if TYPE_CHECKING:
from arcade.core.catalog import ToolCatalog from arcade.sdk import ToolCatalog
from arcade.sdk.eval.critic import Critic 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.core.utils import snake_to_pascal_case
from arcade.sdk.auth import ToolAuthorization from arcade.sdk.auth import ToolAuthorization
from arcade.sdk.error import ToolExecutionError from arcade.sdk.errors import ToolExecutionError
T = TypeVar("T") T = TypeVar("T")

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -2,8 +2,7 @@ from typing import Annotated
import httpx import httpx
from arcade.core.schema import ToolContext from arcade.sdk import ToolContext, tool
from arcade.sdk import tool
from arcade.sdk.auth import GitHub from arcade.sdk.auth import GitHub
from arcade_github.tools.utils import get_github_json_headers, get_url, handle_github_response 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 import httpx
from arcade.core.schema import ToolContext from arcade.sdk import ToolContext, tool
from arcade.sdk import tool
from arcade.sdk.auth import GitHub from arcade.sdk.auth import GitHub
from arcade_github.tools.utils import ( from arcade_github.tools.utils import (
get_github_json_headers, get_github_json_headers,

View file

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

View file

@ -3,8 +3,7 @@ from typing import Annotated, Optional
import httpx import httpx
from arcade.core.schema import ToolContext from arcade.sdk import ToolContext, tool
from arcade.sdk import tool
from arcade.sdk.auth import GitHub from arcade.sdk.auth import GitHub
from arcade_github.tools.models import ( from arcade_github.tools.models import (
ActivityType, 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 from arcade_github.tools.constants import ENDPOINTS, GITHUB_API_BASE_URL

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,6 @@
from typing import Annotated, Optional from typing import Annotated, Optional
from arcade.core.schema import ToolContext from arcade.sdk import ToolContext, tool
from arcade.sdk import tool
from arcade.sdk.auth import Google from arcade.sdk.auth import Google
from arcade_google.tools.utils import build_drive_service, remove_none_values 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.discovery import build
from googleapiclient.errors import HttpError from googleapiclient.errors import HttpError
from arcade.core.schema import ToolContext from arcade.sdk import ToolContext, tool
from arcade.sdk import tool
from arcade.sdk.auth import Google from arcade.sdk.auth import Google
from arcade.sdk.error import RetryableToolError from arcade.sdk.errors import RetryableToolError
from arcade_google.tools.utils import ( from arcade_google.tools.utils import (
DateRange, DateRange,
build_query_string, build_query_string,

View file

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

View file

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

View file

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

View file

@ -3,7 +3,7 @@ from arcade_google.tools.gmail import (
send_email, send_email,
) )
from arcade.core.catalog import ToolCatalog from arcade.sdk import ToolCatalog
from arcade.sdk.eval import ( from arcade.sdk.eval import (
BinaryCritic, BinaryCritic,
EvalRubric, 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 arcade_google.tools.models import EventVisibility, SendUpdatesOptions
from googleapiclient.errors import HttpError from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError from arcade.sdk import ToolAuthorizationContext, ToolContext
from arcade.core.schema import ToolAuthorizationContext, ToolContext from arcade.sdk.errors import ToolExecutionError
@pytest.fixture @pytest.fixture

View file

@ -10,7 +10,7 @@ from arcade_google.tools.docs import (
from arcade_google.tools.utils import build_docs_service from arcade_google.tools.utils import build_docs_service
from googleapiclient.errors import HttpError from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError from arcade.sdk.errors import ToolExecutionError
@pytest.fixture @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 arcade_google.tools.utils import build_drive_service
from googleapiclient.errors import HttpError from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError from arcade.sdk.errors import ToolExecutionError
@pytest.fixture @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 arcade_google.tools.utils import parse_draft_email, parse_email
from googleapiclient.errors import HttpError from googleapiclient.errors import HttpError
from arcade.core.errors import ToolExecutionError from arcade.sdk import ToolAuthorizationContext, ToolContext
from arcade.core.schema import ToolAuthorizationContext, ToolContext from arcade.sdk.errors import ToolExecutionError
@pytest.fixture @pytest.fixture

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
import arcade_slack import arcade_slack
from arcade_slack.tools.chat import send_dm_to_user, send_message_to_channel 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 ( from arcade.sdk.eval import (
BinaryCritic, BinaryCritic,
EvalRubric, EvalRubric,

View file

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

View file

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

View file

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

View file

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

View file

@ -2,10 +2,9 @@ from typing import Annotated
import httpx import httpx
from arcade.core.errors import ToolExecutionError from arcade.sdk import ToolContext, tool
from arcade.core.schema import ToolContext
from arcade.sdk import tool
from arcade.sdk.auth import X 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 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_keywords,
# search_recent_tweets_by_username, # search_recent_tweets_by_username,
# from arcade_x.tools.users import lookup_single_user_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 ( from arcade.sdk.eval import (
EvalRubric, EvalRubric,
EvalSuite, EvalSuite,

View file

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