mirror of
https://github.com/hwchase17/langchain
synced 2024-11-10 01:10:59 +00:00
ed58eeb9c5
Moved the following modules to new package langchain-community in a backwards compatible fashion: ``` mv langchain/langchain/adapters community/langchain_community mv langchain/langchain/callbacks community/langchain_community/callbacks mv langchain/langchain/chat_loaders community/langchain_community mv langchain/langchain/chat_models community/langchain_community mv langchain/langchain/document_loaders community/langchain_community mv langchain/langchain/docstore community/langchain_community mv langchain/langchain/document_transformers community/langchain_community mv langchain/langchain/embeddings community/langchain_community mv langchain/langchain/graphs community/langchain_community mv langchain/langchain/llms community/langchain_community mv langchain/langchain/memory/chat_message_histories community/langchain_community mv langchain/langchain/retrievers community/langchain_community mv langchain/langchain/storage community/langchain_community mv langchain/langchain/tools community/langchain_community mv langchain/langchain/utilities community/langchain_community mv langchain/langchain/vectorstores community/langchain_community mv langchain/langchain/agents/agent_toolkits community/langchain_community mv langchain/langchain/cache.py community/langchain_community mv langchain/langchain/adapters community/langchain_community mv langchain/langchain/callbacks community/langchain_community/callbacks mv langchain/langchain/chat_loaders community/langchain_community mv langchain/langchain/chat_models community/langchain_community mv langchain/langchain/document_loaders community/langchain_community mv langchain/langchain/docstore community/langchain_community mv langchain/langchain/document_transformers community/langchain_community mv langchain/langchain/embeddings community/langchain_community mv langchain/langchain/graphs community/langchain_community mv langchain/langchain/llms community/langchain_community mv langchain/langchain/memory/chat_message_histories community/langchain_community mv langchain/langchain/retrievers community/langchain_community mv langchain/langchain/storage community/langchain_community mv langchain/langchain/tools community/langchain_community mv langchain/langchain/utilities community/langchain_community mv langchain/langchain/vectorstores community/langchain_community mv langchain/langchain/agents/agent_toolkits community/langchain_community mv langchain/langchain/cache.py community/langchain_community ``` Moved the following to core ``` mv langchain/langchain/utils/json_schema.py core/langchain_core/utils mv langchain/langchain/utils/html.py core/langchain_core/utils mv langchain/langchain/utils/strings.py core/langchain_core/utils cat langchain/langchain/utils/env.py >> core/langchain_core/utils/env.py rm langchain/langchain/utils/env.py ``` See .scripts/community_split/script_integrations.sh for all changes
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
"""O365 tool utils."""
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import os
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
from O365 import Account
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def clean_body(body: str) -> str:
|
|
"""Clean body of a message or event."""
|
|
try:
|
|
from bs4 import BeautifulSoup
|
|
|
|
try:
|
|
# Remove HTML
|
|
soup = BeautifulSoup(str(body), "html.parser")
|
|
body = soup.get_text()
|
|
|
|
# Remove return characters
|
|
body = "".join(body.splitlines())
|
|
|
|
# Remove extra spaces
|
|
body = " ".join(body.split())
|
|
|
|
return str(body)
|
|
except Exception:
|
|
return str(body)
|
|
except ImportError:
|
|
return str(body)
|
|
|
|
|
|
def authenticate() -> Account:
|
|
"""Authenticate using the Microsoft Grah API"""
|
|
try:
|
|
from O365 import Account
|
|
except ImportError as e:
|
|
raise ImportError(
|
|
"Cannot import 0365. Please install the package with `pip install O365`."
|
|
) from e
|
|
|
|
if "CLIENT_ID" in os.environ and "CLIENT_SECRET" in os.environ:
|
|
client_id = os.environ["CLIENT_ID"]
|
|
client_secret = os.environ["CLIENT_SECRET"]
|
|
credentials = (client_id, client_secret)
|
|
else:
|
|
logger.error(
|
|
"Error: The CLIENT_ID and CLIENT_SECRET environmental variables have not "
|
|
"been set. Visit the following link on how to acquire these authorization "
|
|
"tokens: https://learn.microsoft.com/en-us/graph/auth/"
|
|
)
|
|
return None
|
|
|
|
account = Account(credentials)
|
|
|
|
if account.is_authenticated is False:
|
|
if not account.authenticate(
|
|
scopes=[
|
|
"https://graph.microsoft.com/Mail.ReadWrite",
|
|
"https://graph.microsoft.com/Mail.Send",
|
|
"https://graph.microsoft.com/Calendars.ReadWrite",
|
|
"https://graph.microsoft.com/MailboxSettings.ReadWrite",
|
|
]
|
|
):
|
|
print("Error: Could not authenticate")
|
|
return None
|
|
else:
|
|
return account
|
|
else:
|
|
return account
|
|
|
|
|
|
UTC_FORMAT = "%Y-%m-%dT%H:%M:%S%z"
|
|
"""UTC format for datetime objects."""
|