refac: fix linting
This commit is contained in:
parent
e6ce86b66a
commit
17ad4954ef
11 changed files with 131 additions and 140 deletions
2
src/backend/langflow/cache/utils.py
vendored
2
src/backend/langflow/cache/utils.py
vendored
|
|
@ -5,7 +5,7 @@ import os
|
||||||
import tempfile
|
import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import dill
|
import dill # type: ignore
|
||||||
|
|
||||||
PREFIX = "langflow_cache"
|
PREFIX = "langflow_cache"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
import json
|
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from typing import Any, Dict, List, Optional, Union
|
from typing import Any, Dict, List, Optional, Union
|
||||||
|
|
||||||
from langflow.graph.base import Node
|
from langflow.graph.base import Node
|
||||||
from langflow.graph.utils import extract_input_variables_from_prompt
|
from langflow.graph.utils import extract_input_variables_from_prompt
|
||||||
from langflow.interface.toolkits.base import toolkits_creator
|
|
||||||
|
|
||||||
|
|
||||||
class AgentNode(Node):
|
class AgentNode(Node):
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,14 @@
|
||||||
from pathlib import Path
|
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from langchain import LLMChain
|
from langchain import LLMChain
|
||||||
from langchain.agents import AgentExecutor, ZeroShotAgent
|
from langchain.agents import AgentExecutor, ZeroShotAgent
|
||||||
from langchain.agents.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX
|
from langchain.agents.agent_toolkits.json.prompt import JSON_PREFIX, JSON_SUFFIX
|
||||||
from langchain.agents.agent_toolkits.json.toolkit import JsonToolkit
|
from langchain.agents.agent_toolkits.json.toolkit import JsonToolkit
|
||||||
from langchain.agents.agent_toolkits.pandas.base import create_pandas_dataframe_agent
|
|
||||||
from langchain.agents.agent_toolkits.pandas.prompt import PREFIX as PANDAS_PREFIX
|
from langchain.agents.agent_toolkits.pandas.prompt import PREFIX as PANDAS_PREFIX
|
||||||
from langchain.agents.agent_toolkits.pandas.prompt import SUFFIX as PANDAS_SUFFIX
|
from langchain.agents.agent_toolkits.pandas.prompt import SUFFIX as PANDAS_SUFFIX
|
||||||
from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS
|
from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS
|
||||||
from langchain.llms.base import BaseLLM
|
|
||||||
from langchain.schema import BaseLanguageModel
|
from langchain.schema import BaseLanguageModel
|
||||||
from langchain.tools.python.tool import PythonAstREPLTool
|
from langchain.tools.python.tool import PythonAstREPLTool
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
|
|
||||||
class JsonAgent(AgentExecutor):
|
class JsonAgent(AgentExecutor):
|
||||||
|
|
@ -65,12 +61,12 @@ class CSVAgent(AgentExecutor):
|
||||||
pandas_kwargs: Optional[dict] = None,
|
pandas_kwargs: Optional[dict] = None,
|
||||||
**kwargs: Any
|
**kwargs: Any
|
||||||
):
|
):
|
||||||
import pandas as pd
|
import pandas as pd # type: ignore
|
||||||
|
|
||||||
_kwargs = pandas_kwargs or {}
|
_kwargs = pandas_kwargs or {}
|
||||||
df = pd.DataFrame.from_dict(path, **_kwargs)
|
df = pd.DataFrame.from_dict(path, **_kwargs)
|
||||||
|
|
||||||
tools = [PythonAstREPLTool(locals={"df": df})]
|
tools = [PythonAstREPLTool(locals={"df": df})] # type: ignore
|
||||||
prompt = ZeroShotAgent.create_prompt(
|
prompt = ZeroShotAgent.create_prompt(
|
||||||
tools,
|
tools,
|
||||||
prefix=PANDAS_PREFIX,
|
prefix=PANDAS_PREFIX,
|
||||||
|
|
@ -81,7 +77,6 @@ class CSVAgent(AgentExecutor):
|
||||||
llm_chain = LLMChain(
|
llm_chain = LLMChain(
|
||||||
llm=llm,
|
llm=llm,
|
||||||
prompt=partial_prompt,
|
prompt=partial_prompt,
|
||||||
callback_manager=None,
|
|
||||||
)
|
)
|
||||||
tool_names = [tool.name for tool in tools]
|
tool_names = [tool.name for tool in tools]
|
||||||
agent = ZeroShotAgent(llm_chain=llm_chain, allowed_tools=tool_names, **kwargs)
|
agent = ZeroShotAgent(llm_chain=llm_chain, allowed_tools=tool_names, **kwargs)
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,11 @@
|
||||||
## LLM
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
|
## LLM
|
||||||
from langchain import llms, requests
|
from langchain import llms, requests
|
||||||
from langchain.agents import agent_toolkits
|
from langchain.agents import agent_toolkits
|
||||||
from langchain.chat_models import ChatOpenAI
|
from langchain.chat_models import ChatOpenAI
|
||||||
|
|
||||||
from langflow.interface.importing.utils import import_class
|
|
||||||
|
|
||||||
llm_type_to_cls_dict = llms.type_to_cls_dict
|
|
||||||
llm_type_to_cls_dict["openai-chat"] = ChatOpenAI
|
|
||||||
|
|
||||||
|
|
||||||
## Memory
|
## Memory
|
||||||
|
|
||||||
# from langchain.memory.buffer_window import ConversationBufferWindowMemory
|
# from langchain.memory.buffer_window import ConversationBufferWindowMemory
|
||||||
# from langchain.memory.chat_memory import ChatMessageHistory
|
# from langchain.memory.chat_memory import ChatMessageHistory
|
||||||
# from langchain.memory.combined import CombinedMemory
|
# from langchain.memory.combined import CombinedMemory
|
||||||
|
|
@ -22,108 +15,7 @@ llm_type_to_cls_dict["openai-chat"] = ChatOpenAI
|
||||||
# from langchain.memory.simple import SimpleMemory
|
# from langchain.memory.simple import SimpleMemory
|
||||||
# from langchain.memory.summary import ConversationSummaryMemory
|
# from langchain.memory.summary import ConversationSummaryMemory
|
||||||
# from langchain.memory.summary_buffer import ConversationSummaryBufferMemory
|
# from langchain.memory.summary_buffer import ConversationSummaryBufferMemory
|
||||||
|
|
||||||
memory_type_to_cls_dict: dict[str, Any] = {
|
|
||||||
# "CombinedMemory": CombinedMemory,
|
|
||||||
# "ConversationBufferWindowMemory": ConversationBufferWindowMemory,
|
|
||||||
# "ConversationBufferMemory": ConversationBufferMemory,
|
|
||||||
# "SimpleMemory": SimpleMemory,
|
|
||||||
# "ConversationSummaryBufferMemory": ConversationSummaryBufferMemory,
|
|
||||||
# "ConversationKGMemory": ConversationKGMemory,
|
|
||||||
# "ConversationEntityMemory": ConversationEntityMemory,
|
|
||||||
# "ConversationSummaryMemory": ConversationSummaryMemory,
|
|
||||||
# "ChatMessageHistory": ChatMessageHistory,
|
|
||||||
# "ConversationStringBufferMemory": ConversationStringBufferMemory,
|
|
||||||
# "ReadOnlySharedMemory": ReadOnlySharedMemory,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
## Chain
|
|
||||||
# from langchain.chains.loading import type_to_loader_dict
|
|
||||||
# from langchain.chains.conversation.base import ConversationChain
|
|
||||||
|
|
||||||
# chain_type_to_cls_dict = type_to_loader_dict
|
|
||||||
# chain_type_to_cls_dict["conversation_chain"] = ConversationChain
|
|
||||||
|
|
||||||
toolkit_type_to_loader_dict: dict[str, Any] = {
|
|
||||||
toolkit_name: import_class(f"langchain.agents.agent_toolkits.{toolkit_name}")
|
|
||||||
# if toolkit_name is lower case it is a loader
|
|
||||||
for toolkit_name in agent_toolkits.__all__
|
|
||||||
if toolkit_name.islower()
|
|
||||||
}
|
|
||||||
|
|
||||||
toolkit_type_to_cls_dict: dict[str, Any] = {
|
|
||||||
toolkit_name: import_class(f"langchain.agents.agent_toolkits.{toolkit_name}")
|
|
||||||
# if toolkit_name is not lower case it is a class
|
|
||||||
for toolkit_name in agent_toolkits.__all__
|
|
||||||
if not toolkit_name.islower()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wrapper_type_to_cls_dict: dict[str, Any] = {
|
|
||||||
wrapper.__name__: wrapper for wrapper in [requests.RequestsWrapper]
|
|
||||||
}
|
|
||||||
|
|
||||||
## Embeddings
|
|
||||||
from langchain.embeddings import (
|
|
||||||
CohereEmbeddings,
|
|
||||||
FakeEmbeddings,
|
|
||||||
HuggingFaceEmbeddings,
|
|
||||||
HuggingFaceHubEmbeddings,
|
|
||||||
HuggingFaceInstructEmbeddings,
|
|
||||||
OpenAIEmbeddings,
|
|
||||||
SelfHostedEmbeddings,
|
|
||||||
SelfHostedHuggingFaceEmbeddings,
|
|
||||||
SelfHostedHuggingFaceInstructEmbeddings,
|
|
||||||
# SagemakerEndpointEmbeddings,
|
|
||||||
TensorflowHubEmbeddings,
|
|
||||||
)
|
|
||||||
|
|
||||||
embedding_type_to_cls_dict = {
|
|
||||||
"OpenAIEmbeddings": OpenAIEmbeddings,
|
|
||||||
"HuggingFaceEmbeddings": HuggingFaceEmbeddings,
|
|
||||||
"CohereEmbeddings": CohereEmbeddings,
|
|
||||||
"HuggingFaceHubEmbeddings": HuggingFaceHubEmbeddings,
|
|
||||||
"TensorflowHubEmbeddings": TensorflowHubEmbeddings,
|
|
||||||
# "SagemakerEndpointEmbeddings": SagemakerEndpointEmbeddings,
|
|
||||||
"HuggingFaceInstructEmbeddings": HuggingFaceInstructEmbeddings,
|
|
||||||
"SelfHostedEmbeddings": SelfHostedEmbeddings,
|
|
||||||
"SelfHostedHuggingFaceEmbeddings": SelfHostedHuggingFaceEmbeddings,
|
|
||||||
"SelfHostedHuggingFaceInstructEmbeddings": SelfHostedHuggingFaceInstructEmbeddings,
|
|
||||||
"FakeEmbeddings": FakeEmbeddings,
|
|
||||||
}
|
|
||||||
|
|
||||||
## Vector Stores
|
|
||||||
from langchain.vectorstores import (
|
|
||||||
FAISS,
|
|
||||||
AtlasDB,
|
|
||||||
Chroma,
|
|
||||||
DeepLake,
|
|
||||||
ElasticVectorSearch,
|
|
||||||
Milvus,
|
|
||||||
OpenSearchVectorSearch,
|
|
||||||
Pinecone,
|
|
||||||
Qdrant,
|
|
||||||
VectorStore,
|
|
||||||
Weaviate,
|
|
||||||
)
|
|
||||||
|
|
||||||
vectorstores_type_to_cls_dict = {
|
|
||||||
"ElasticVectorSearch": ElasticVectorSearch,
|
|
||||||
"FAISS": FAISS,
|
|
||||||
"VectorStore": VectorStore,
|
|
||||||
"Pinecone": Pinecone,
|
|
||||||
"Weaviate": Weaviate,
|
|
||||||
"Qdrant": Qdrant,
|
|
||||||
"Milvus": Milvus,
|
|
||||||
"Chroma": Chroma,
|
|
||||||
"OpenSearchVectorSearch": OpenSearchVectorSearch,
|
|
||||||
"AtlasDB": AtlasDB,
|
|
||||||
"DeepLake": DeepLake,
|
|
||||||
}
|
|
||||||
|
|
||||||
## Document Loaders
|
## Document Loaders
|
||||||
|
|
||||||
from langchain.document_loaders import (
|
from langchain.document_loaders import (
|
||||||
AirbyteJSONLoader,
|
AirbyteJSONLoader,
|
||||||
AZLyricsLoader,
|
AZLyricsLoader,
|
||||||
|
|
@ -173,6 +65,122 @@ from langchain.document_loaders import (
|
||||||
YoutubeLoader,
|
YoutubeLoader,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
## Embeddings
|
||||||
|
from langchain.embeddings import (
|
||||||
|
CohereEmbeddings,
|
||||||
|
FakeEmbeddings,
|
||||||
|
HuggingFaceEmbeddings,
|
||||||
|
HuggingFaceHubEmbeddings,
|
||||||
|
HuggingFaceInstructEmbeddings,
|
||||||
|
OpenAIEmbeddings,
|
||||||
|
SelfHostedEmbeddings,
|
||||||
|
SelfHostedHuggingFaceEmbeddings,
|
||||||
|
SelfHostedHuggingFaceInstructEmbeddings,
|
||||||
|
# SagemakerEndpointEmbeddings,
|
||||||
|
TensorflowHubEmbeddings,
|
||||||
|
)
|
||||||
|
|
||||||
|
## Vector Stores
|
||||||
|
from langchain.vectorstores import (
|
||||||
|
FAISS,
|
||||||
|
AtlasDB,
|
||||||
|
Chroma,
|
||||||
|
DeepLake,
|
||||||
|
ElasticVectorSearch,
|
||||||
|
Milvus,
|
||||||
|
OpenSearchVectorSearch,
|
||||||
|
Pinecone,
|
||||||
|
Qdrant,
|
||||||
|
VectorStore,
|
||||||
|
Weaviate,
|
||||||
|
)
|
||||||
|
|
||||||
|
## Toolkits
|
||||||
|
from langflow.interface.importing.utils import import_class
|
||||||
|
|
||||||
|
## LLM
|
||||||
|
|
||||||
|
llm_type_to_cls_dict = llms.type_to_cls_dict
|
||||||
|
llm_type_to_cls_dict["openai-chat"] = ChatOpenAI # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
## Memory
|
||||||
|
|
||||||
|
memory_type_to_cls_dict: dict[str, Any] = {
|
||||||
|
# "CombinedMemory": CombinedMemory,
|
||||||
|
# "ConversationBufferWindowMemory": ConversationBufferWindowMemory,
|
||||||
|
# "ConversationBufferMemory": ConversationBufferMemory,
|
||||||
|
# "SimpleMemory": SimpleMemory,
|
||||||
|
# "ConversationSummaryBufferMemory": ConversationSummaryBufferMemory,
|
||||||
|
# "ConversationKGMemory": ConversationKGMemory,
|
||||||
|
# "ConversationEntityMemory": ConversationEntityMemory,
|
||||||
|
# "ConversationSummaryMemory": ConversationSummaryMemory,
|
||||||
|
# "ChatMessageHistory": ChatMessageHistory,
|
||||||
|
# "ConversationStringBufferMemory": ConversationStringBufferMemory,
|
||||||
|
# "ReadOnlySharedMemory": ReadOnlySharedMemory,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## Chain
|
||||||
|
# from langchain.chains.loading import type_to_loader_dict
|
||||||
|
# from langchain.chains.conversation.base import ConversationChain
|
||||||
|
|
||||||
|
# chain_type_to_cls_dict = type_to_loader_dict
|
||||||
|
# chain_type_to_cls_dict["conversation_chain"] = ConversationChain
|
||||||
|
|
||||||
|
toolkit_type_to_loader_dict: dict[str, Any] = {
|
||||||
|
toolkit_name: import_class(f"langchain.agents.agent_toolkits.{toolkit_name}")
|
||||||
|
# if toolkit_name is lower case it is a loader
|
||||||
|
for toolkit_name in agent_toolkits.__all__
|
||||||
|
if toolkit_name.islower()
|
||||||
|
}
|
||||||
|
|
||||||
|
toolkit_type_to_cls_dict: dict[str, Any] = {
|
||||||
|
toolkit_name: import_class(f"langchain.agents.agent_toolkits.{toolkit_name}")
|
||||||
|
# if toolkit_name is not lower case it is a class
|
||||||
|
for toolkit_name in agent_toolkits.__all__
|
||||||
|
if not toolkit_name.islower()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wrapper_type_to_cls_dict: dict[str, Any] = {
|
||||||
|
wrapper.__name__: wrapper for wrapper in [requests.RequestsWrapper]
|
||||||
|
}
|
||||||
|
|
||||||
|
## Embeddings
|
||||||
|
|
||||||
|
embedding_type_to_cls_dict = {
|
||||||
|
"OpenAIEmbeddings": OpenAIEmbeddings,
|
||||||
|
"HuggingFaceEmbeddings": HuggingFaceEmbeddings,
|
||||||
|
"CohereEmbeddings": CohereEmbeddings,
|
||||||
|
"HuggingFaceHubEmbeddings": HuggingFaceHubEmbeddings,
|
||||||
|
"TensorflowHubEmbeddings": TensorflowHubEmbeddings,
|
||||||
|
# "SagemakerEndpointEmbeddings": SagemakerEndpointEmbeddings,
|
||||||
|
"HuggingFaceInstructEmbeddings": HuggingFaceInstructEmbeddings,
|
||||||
|
"SelfHostedEmbeddings": SelfHostedEmbeddings,
|
||||||
|
"SelfHostedHuggingFaceEmbeddings": SelfHostedHuggingFaceEmbeddings,
|
||||||
|
"SelfHostedHuggingFaceInstructEmbeddings": SelfHostedHuggingFaceInstructEmbeddings,
|
||||||
|
"FakeEmbeddings": FakeEmbeddings,
|
||||||
|
}
|
||||||
|
|
||||||
|
## Vector Stores
|
||||||
|
|
||||||
|
vectorstores_type_to_cls_dict = {
|
||||||
|
"ElasticVectorSearch": ElasticVectorSearch,
|
||||||
|
"FAISS": FAISS,
|
||||||
|
"VectorStore": VectorStore,
|
||||||
|
"Pinecone": Pinecone,
|
||||||
|
"Weaviate": Weaviate,
|
||||||
|
"Qdrant": Qdrant,
|
||||||
|
"Milvus": Milvus,
|
||||||
|
"Chroma": Chroma,
|
||||||
|
"OpenSearchVectorSearch": OpenSearchVectorSearch,
|
||||||
|
"AtlasDB": AtlasDB,
|
||||||
|
"DeepLake": DeepLake,
|
||||||
|
}
|
||||||
|
|
||||||
|
## Document Loaders
|
||||||
|
|
||||||
documentloaders_type_to_cls_dict = {
|
documentloaders_type_to_cls_dict = {
|
||||||
"UnstructuredFileLoader": UnstructuredFileLoader,
|
"UnstructuredFileLoader": UnstructuredFileLoader,
|
||||||
"UnstructuredFileIOLoader": UnstructuredFileIOLoader,
|
"UnstructuredFileIOLoader": UnstructuredFileIOLoader,
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ from langchain.chains.base import Chain
|
||||||
from langchain.llms.base import BaseLLM
|
from langchain.llms.base import BaseLLM
|
||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
|
|
||||||
from langflow.interface.agents.custom import CUSTOM_AGENTS
|
|
||||||
from langflow.interface.tools.util import get_tool_by_name
|
from langflow.interface.tools.util import get_tool_by_name
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ def instantiate_class(node_type: str, base_type: str, params: Dict) -> Any:
|
||||||
"""Instantiate class from module type and key, and params"""
|
"""Instantiate class from module type and key, and params"""
|
||||||
if node_type in CUSTOM_AGENTS:
|
if node_type in CUSTOM_AGENTS:
|
||||||
if custom_agent := CUSTOM_AGENTS.get(node_type):
|
if custom_agent := CUSTOM_AGENTS.get(node_type):
|
||||||
return custom_agent.initialize(**params)
|
return custom_agent.initialize(**params) # type: ignore
|
||||||
|
|
||||||
class_object = import_by_type(_type=base_type, name=node_type)
|
class_object = import_by_type(_type=base_type, name=node_type)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,7 @@ from typing import Dict, List
|
||||||
|
|
||||||
from langchain import requests
|
from langchain import requests
|
||||||
|
|
||||||
from langflow.custom.customs import get_custom_nodes
|
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.settings import settings
|
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
import hashlib
|
|
||||||
import json
|
import json
|
||||||
import tempfile
|
import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import dill
|
|
||||||
import pytest
|
import pytest
|
||||||
from langflow.cache.utils import PREFIX, compute_hash, load_cache, save_cache
|
from langflow.cache.utils import PREFIX, compute_hash
|
||||||
from langflow.interface.run import load_langchain_object, process_graph
|
from langflow.interface.run import load_langchain_object
|
||||||
|
|
||||||
|
|
||||||
def get_graph(_type="basic"):
|
def get_graph(_type="basic"):
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ def sample_lang_chain_type_creator() -> LangChainTypeCreator:
|
||||||
class SampleLangChainTypeCreator(LangChainTypeCreator):
|
class SampleLangChainTypeCreator(LangChainTypeCreator):
|
||||||
type_name: str = "test_type"
|
type_name: str = "test_type"
|
||||||
|
|
||||||
def type_to_loader_dict(self) -> Dict:
|
def type_to_loader_dict(self) -> Dict: # type: ignore
|
||||||
return {"test_type": "TestClass"}
|
return {"test_type": "TestClass"}
|
||||||
|
|
||||||
def to_list(self) -> List[str]:
|
def to_list(self) -> List[str]:
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
from typing import Dict, List
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from langflow.interface.agents.base import AgentCreator
|
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
|
||||||
from langflow.template.base import FrontendNode, Template, TemplateField
|
from langflow.template.base import FrontendNode, Template, TemplateField
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,16 +24,16 @@ def sample_frontend_node(sample_template: Template) -> FrontendNode:
|
||||||
|
|
||||||
def test_template_field_defaults(sample_template_field: TemplateField):
|
def test_template_field_defaults(sample_template_field: TemplateField):
|
||||||
assert sample_template_field.field_type == "str"
|
assert sample_template_field.field_type == "str"
|
||||||
assert sample_template_field.required == False
|
assert sample_template_field.required is False
|
||||||
assert sample_template_field.placeholder == ""
|
assert sample_template_field.placeholder == ""
|
||||||
assert sample_template_field.is_list == False
|
assert sample_template_field.is_list is False
|
||||||
assert sample_template_field.show == True
|
assert sample_template_field.show is True
|
||||||
assert sample_template_field.multiline == False
|
assert sample_template_field.multiline is False
|
||||||
assert sample_template_field.value == None
|
assert sample_template_field.value is None
|
||||||
assert sample_template_field.suffixes == []
|
assert sample_template_field.suffixes == []
|
||||||
assert sample_template_field.file_types == []
|
assert sample_template_field.file_types == []
|
||||||
assert sample_template_field.content == None
|
assert sample_template_field.content is None
|
||||||
assert sample_template_field.password == False
|
assert sample_template_field.password is False
|
||||||
assert sample_template_field.name == "test_field"
|
assert sample_template_field.name == "test_field"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import importlib
|
import importlib
|
||||||
import re
|
|
||||||
from typing import Dict, List, Optional
|
from typing import Dict, List, Optional
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue