Commit graph

11,619 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
3d650c8491 feat(schemas.py): add Token schema to represent access and refresh tokens in API responses 2023-08-25 15:26:22 -03:00
Gabriel Luiz Freitas Almeida
d8f5efabad 🐛 fix(loading.py): add type hinting for TYPE_CHECKING to improve code readability
🐛 fix(loading.py): add optional user_id parameter to instantiate_class and instantiate_based_on_type functions to support user-specific custom components
 feat(loading.py): modify instantiate_custom_component function to use user_id parameter and improve code readability
2023-08-25 15:26:21 -03:00
Gabriel Luiz Freitas Almeida
1a50bcd183 🐛 fix(base.py): change return type of generator_build method to Generator[Vertex, None, None] for better type hinting and clarity
🐛 fix(base.py): add optional user_id parameter to _build and _build_list_of_nodes_and_update_params methods in Vertex class to support building with user-specific data
🐛 fix(base.py): add optional user_id parameter to _get_and_instantiate_class method in Vertex class to support building with user-specific data
🐛 fix(custom_component.py): add user_id attribute to CustomComponent class to store the user ID associated with the component
🐛 fix(custom_component.py): add user_id parameter to list_flows method in CustomComponent class to filter flows by user ID
🐛 fix(custom_component.py): add user_id parameter to get_flow method in CustomComponent class to filter flows by user ID
🐛 fix(conftest.py): add client parameter to active_user fixture in tests to fix missing dependency error
2023-08-25 15:26:21 -03:00
Gabriel Luiz Freitas Almeida
c268b2be17 🔥 refactor(models): remove Token model and references to it to simplify the codebase and remove unused code
🔥 refactor(test_custom_component.py): remove unused fixture and imports to clean up the test file
🔧 chore(test_custom_component.py): update component fixture to include user_id parameter for testing purposes
2023-08-25 15:26:20 -03:00
anovazzi1
82826d6b44 fix(constants.ts): update BASE_URL_API to "/api/v1/" to match backend API endpoint
fix(API/index.ts): update API endpoints to use BASE_URL_API instead of hardcoding "/api/v1/"
2023-08-25 15:15:19 -03:00
Gabriel Luiz Freitas Almeida
0a4c19082d 📦 chore(pyproject.toml): add markupsafe dependency to improve compatibility and security
🔒 chore(pyproject.toml): update black dependency to version 23.1.0 for development purposes
2023-08-25 15:03:14 -03:00
Guangya Liu
dae856d0f6 Added readme for docker example 2023-08-25 15:03:14 -03:00
Matheus Jacques
b3c0f3b853 🔧 chore(main.tf): add Terraform backend configuration for S3 to store state remotely 2023-08-25 18:19:42 +02:00
Gabriel Luiz Freitas Almeida
3b2bfd06cc 🔧 fix(test_database.py): fix test_create_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_read_flows function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_read_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_update_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_delete_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_create_flows function signature to include logged_in_headers parameter
🔧 fix(test_database.py): fix test_upload_file function signature to include logged_in_headers parameter
🔧 fix(test_database.py): fix test_download_file function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_create_flow_with_invalid_data function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_get_nonexistent_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_update_flow_idempotency function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_update_nonexistent_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_delete_nonexistent_flow function signature to include active_user and logged_in_headers parameters
🔧 fix(test_database.py): fix test_read_empty_flows function signature to include active_user and logged_in_headers parameters
2023-08-25 12:49:57 -03:00
Gabriel Luiz Freitas Almeida
00e5f70fe1 🔀 chore(user.py): add relationship to flows in User model 2023-08-25 12:49:46 -03:00
Gabriel Luiz Freitas Almeida
b5e4df9943 🐛 fix(flows.py): add missing import statement for User model
🐛 fix(flows.py): add missing import statement for TYPE_CHECKING
 feat(flows.py): add user_id field to FlowCreate model to allow specifying the user for a new flow
 feat(flows.py): add user_id field to FlowRead model to include the user_id in the response
 feat(flows.py): add user_id field to Flow model and create a relationship with User model
 feat(flows.py): add current_user dependency to create_flow endpoint to set the user_id for a new flow
 feat(flows.py): add current_user dependency to read_flows endpoint to filter flows by current user
 feat(flows.py): add current_user dependency to read_flow endpoint to filter flow by current user
 feat(flows.py): add current_user dependency to update_flow endpoint to filter flow by current user
 feat(flows.py): add current_user dependency to delete_flow endpoint to filter flow by current user
 feat(flows.py): add current_user dependency to create_flows endpoint to set the user_id for new flows
 feat(flows.py): add current_user dependency to upload_file endpoint to set the user_id for new flows
 feat(flows.py): add current_user dependency to download_file endpoint to filter flows by current user
🐛 fix(flow.py): add missing import statement for User model
 feat(flow.py): add user_id field to Flow model to associate a flow with a user
2023-08-25 12:49:24 -03:00
Gabriel Luiz Freitas Almeida
eab34e2fdc
Adds Tests for Login, Users and API keys (#821) 2023-08-25 15:27:02 +00:00
Gabriel Luiz Freitas Almeida
16695c8241
Merge branch 'login' into authentication 2023-08-25 15:23:22 +00:00
Gabriel Luiz Freitas Almeida
a4aeff6d79 🔧 fix(api_key.py): import missing dependencies and fix type annotations in api_key.py
🔧 fix(api_key.py): fix type annotations and import in api_key.py
🔧 fix(api_key.py): fix type annotations and
2023-08-25 12:21:14 -03:00
Gabriel Luiz Freitas Almeida
950b9d179b 🔥 refactor(user/utils.py): remove unused code and imports from user/utils.py module
 feat(test_api_key.py): add tests for API key creation, retrieval, and deletion
 feat(test_user.py): remove unused fixtures and imports from test_user.py module
2023-08-25 12:05:54 -03:00
Gabriel Luiz Freitas Almeida
ba081e81b6 🔀 chore(user.py): add type hinting for ApiKey import to improve code readability
🔀 chore(user.py): add relationship between User and ApiKey models to establish a one-to-many relationship
2023-08-25 12:05:20 -03:00
Gabriel Luiz Freitas Almeida
7783f4532e 📦 chore(user/crud.py): add CRUD operations for User model in database
🔒 fix(user/crud.py): add validation to prevent duplicate usernames during user update
🔄 refactor(user/crud.py): update user attributes and last_login_at timestamp during user update
🐛 fix(user/crud.py): handle IntegrityError during user update and rollback transaction
2023-08-25 12:04:51 -03:00
Gabriel Luiz Freitas Almeida
e42686738c 📦 chore(api_key/crud.py): add CRUD functions for managing API keys in the database
This commit adds the following functions to the `api_key/crud.py` file:
- `get_api_keys`: Retrieves a list of API keys associated with a specific user ID from the database.
- `create_api_key`: Generates a random API key, hashes it, and creates a new `ApiKey` object in the database.
- `delete_api_key`: Deletes an API key from the database based on its ID.

These functions provide the necessary functionality for managing API keys in the application's database.
2023-08-25 12:04:20 -03:00
Gabriel Luiz Freitas Almeida
82fbeace06 🔀 chore(api_key): update import and export names in __init__.py for better clarity and consistency
🔀 chore(api_key): add UnmaskedApiKeyRead model to represent an unmasked API key

🔀 chore(api_key): add user relationship to ApiKey model for easier access to associated user

🔀 chore(api_key): add user_id field to ApiKeyBase and ApiKeyCreate models for easier user association

🔀 chore(api_key): add mask_api_key validator to ApiKeyRead model to mask the API key for security reasons
2023-08-25 12:03:51 -03:00
Gabriel Luiz Freitas Almeida
edd58705e4 🔨 refactor(schemas.py): update import statement for ApiKeyRead to reflect new file structure
🔨 refactor(schemas.py): update import statement for ApiKeyRead to reflect
2023-08-25 12:03:03 -03:00
Gabriel Luiz Freitas Almeida
eb02220aad feat(api_key.py): add GET and POST routes for retrieving and creating API keys
🐛 fix(api_key.py): fix delete_api_key route to use correct dependencies and handle exceptions properly
2023-08-25 12:02:32 -03:00
vincent-pli
359bea1286 fix issue, the custom component cannot be load success by setting env variables 2023-08-25 22:57:25 +08:00
Gabriel Luiz Freitas Almeida
614d85b7b7 📦 chore(pyproject.toml): add markupsafe dependency to improve compatibility and security
🔒 chore(pyproject.toml): update black dependency to version 23.1.0 for development purposes
2023-08-25 11:16:08 -03:00
Gabriel Luiz Freitas Almeida
8d1e1b8710 🔒 chore(api_key.py): update hardcoded API key value to improve security
🔒 chore(api_key.py): update hardcoded API key value to improve security by removing the actual key from the code and adding a placeholder comment
2023-08-25 10:25:28 -03:00
Gabriel Luiz Freitas Almeida
fc93e4ced0 🔀 chore(test_database.py): update import statement for Session from sqlalchemy.orm to sqlmodel to match the library being used 2023-08-25 10:24:33 -03:00
Gabriel Luiz Freitas Almeida
81816baada 🔧 fix(login.py): update import statement from sqlalchemy.orm to sqlmodel.Session for Session class
🔧 fix(users.py): update type annotation for current_user parameter from Session to User
🔧 fix(utils.py): update import statement from sqlalchemy.orm to sqlmodel.Session
🔧 fix(utils.py): update type annotation for token parameter from Annotated to Union[Coroutine, str]
🔧 fix(utils.py): update type annotation for get_user_by_username function return type from User to Union[User, None]
🔧 fix(utils.py): update type annotation for get_user_by_id function return type from User to Union[User, None]
🔧 fix(manager.py): update type annotation for dependencies parameter in register_factory method from List to Optional[List]
2023-08-25 10:24:01 -03:00
Gabriel Luiz Freitas Almeida
8411922a07 feat(test_user.py): add tests for user-related functionalities
🐛 fix(test_user.py): fix typo in test_user_waiting_for_approval function name
🐛 fix(test_user.py): fix typo in test_deactivated_user_cannot_access function name
🐛 fix(test_user.py): fix typo in test_data_consistency_after_update function name
🐛 fix(test_user.py): fix typo in test_data_consistency_after_delete function name
🐛 fix(test_user.py): fix typo in test_inactive_user function name
🐛 fix(test_user.py): fix typo in test_normal_user_cant_read_all_users function name
🐛 fix(test_user.py): fix typo in test_patch_user_wrong_id function name
🐛 fix(test_user.py): fix typo in test_delete_user_wrong_id function name
🐛 fix(test_user.py): fix typo in test_normal_user_cant_delete_user function name
 feat(test_user.py): add test_add_super_user_for_testing_purposes_delete_me_before_merge_into_dev function
2023-08-25 10:17:46 -03:00
Gabriel Luiz Freitas Almeida
7b897906b9 feat(test_login.py): add tests for login functionality
🐛 fix(test_login.py): fix typo in test_login_unsuccessful_wrong_username test

🐛 fix(test_login.py): fix typo in test_login_unsuccessful_wrong_password test
2023-08-25 10:17:36 -03:00
Gabriel Luiz Freitas Almeida
7e3d329df9 🔧 chore(auth.py): add API_V1_STR constant to improve code readability and maintainability
🐛 fix(auth.py): update tokenUrl in oauth2_scheme to use API_V1_STR constant for consistency
2023-08-25 10:17:25 -03:00
Gabriel Luiz Freitas Almeida
92a7ae6be7 🐛 fix(utils.py): remove unnecessary type casting in get_user_by_username and get_user_by_id functions
🐛 fix(utils.py): fix update_user function to correctly update user attributes and handle username conflicts
2023-08-25 10:16:04 -03:00
Gabriel Luiz Freitas Almeida
4517f8ad5c 🔧 fix(service.py): add request parameter to run_oauth2_scheme method in AuthManager class to handle FastAPI request object
🔧 fix(utils.py): add request parameter to auth_scheme_dependency function to handle FastAPI request object
🔧 fix(utils.py): change get_current_active_user function to synchronous and remove async keyword
 feat(utils.py): add get_current_active_superuser function to check if the current user is an active superuser
2023-08-25 10:11:24 -03:00
Gabriel Luiz Freitas Almeida
e4cbc0a07f 🐛 fix(users.py): change router tag from "Login" to "Users" for better categorization
 feat(users.py): add status code 201 to the response of the add_user endpoint to indicate successful creation of a new user
🐛 fix(users.py): update the usage of UserCreate model to create a new User instance using User.from_orm(user) for better compatibility
 feat(users.py): add current_user parameter to the read_current_user endpoint to enforce authentication and authorization
 feat(users.py): add current_user parameter to the read_all_users endpoint to enforce authentication and authorization
 feat(users.py): add current_user parameter to the delete_user endpoint to enforce authentication and authorization. Also, add validation checks to prevent deleting own user account and unauthorized deletion of users.
2023-08-25 10:10:57 -03:00
Gabriel Luiz Freitas Almeida
43b2d62661 🔀 chore(router.py): add login_router to the APIRouter to include login functionality
🔀 chore(__init__.py): import and include login_router in the APIRouter to enable login functionality
🔀 chore(login.py): add tags to the login router to categorize it as "Login" in the API documentation
2023-08-25 10:10:19 -03:00
Gabriel Luiz Freitas Almeida
6b82b730cd 🔥 refactor(auth): remove unused code and dependencies in auth module
🔥 refactor(routers): remove unused code and dependencies in routers module
2023-08-25 10:09:37 -03:00
Gabriel Luiz Freitas Almeida
7987a10f92
Fixes bug when saving name and description, TextSplitters (#818) 2023-08-25 02:01:13 +00:00
Gabriel Luiz Freitas Almeida
9249e254fb
Merge branch 'main' into release 2023-08-25 01:59:38 +00:00
Gabriel Luiz Freitas Almeida
748f38e8c4
Fixed bug where name is not changed when description changes (#813) 2023-08-25 01:58:09 +00:00
Gabriel Luiz Freitas Almeida
f19e745b77
New Text Splitters (#817) 2023-08-25 01:56:26 +00:00
Gabriel Luiz Freitas Almeida
a28df1f08f 📝 docs(LanguageRecursiveTextSplitter.py): update documentation link to point to the correct URL
🔨 refactor(LanguageRecursiveTextSplitter.py): change type hints for the 'documents' parameter from Document to list[Document] and change return type from Document to list[Document] to improve clarity and consistency
🔨 refactor(LanguageRecursiveTextSplitter.py): change type hints for the 'chunk_overlap' parameter from Optional[int] to Optional[str] and handle conversion to int to improve flexibility and error handling
🔨 refactor(LanguageRecursiveTextSplitter.py): change type hints for the 'chunk_size' parameter from Optional[int] to Optional[str] and handle conversion to int to improve flexibility and error handling
🔨 refactor(RecursiveCharacterTextSplitter.py): change type hints for the 'documents' parameter from Document to list[Document] and change return type from Document to list[Document] to improve clarity and consistency
🔨 refactor(RecursiveCharacterTextSplitter.py): change type hints for the 'separators' parameter from Optional[str] to Optional[list[str]] and handle conversion to list of escaped characters to improve flexibility and error handling
🔨 refactor(RecursiveCharacterTextSplitter.py): change type hints for the 'chunk_overlap' parameter from Optional[int] to Optional[str] and handle conversion to int to improve flexibility and error handling
🔨 refactor(RecursiveCharacterTextSplitter.py): change type hints for the 'chunk_size' parameter from Optional[int] to Optional[str] and handle conversion to int to improve flexibility and error handling
2023-08-24 22:52:16 -03:00
Gabriel Luiz Freitas Almeida
c9f4969080 🐛 fix(types.py): fix regex pattern in extract_type_from_optional function to correctly extract type from optional field_type
🐛 fix(types.py): fix logic in add_new_custom_field function to correctly set is_list flag when field_type contains "list" keyword
 feat(types.py): add field_contains_list variable to check if field_type contains "list" keyword to improve semantics in add_new_custom_field function
2023-08-24 22:49:52 -03:00
Gabriel Luiz Freitas Almeida
86927d10d3 🔧 fix(types.py): add support for extracting inner type from list field types in process_type function 2023-08-24 22:37:30 -03:00
Gabriel Luiz Freitas Almeida
b326a7e246 📦 chore(pyproject.toml): update package version from 0.4.15 to 0.4.16
🔧 chore(pyproject.toml): add pillow package as a dependency for the project
2023-08-24 22:25:16 -03:00
Gabriel Luiz Freitas Almeida
0649b61fca 📦 chore(LanguageRecursiveTextSplitter.py): add LanguageRecursiveTextSplitter component to split text into chunks based on language
📝 docs(LanguageRecursiveTextSplitter.py): add documentation link for LanguageRecursiveTextSplitter component
🔧 refactor(LanguageRecursiveTextSplitter.py): refactor build_config method to use options from Language enum for separator_type
🔧 refactor(LanguageRecursiveTextSplitter.py): refactor build method to split text into chunks based on specified length and overlap
🔧 refactor(LanguageRecursiveTextSplitter.py): refactor build method to handle chunk_size and chunk_overlap as integers
🔧 refactor(LanguageRecursiveTextSplitter.py): refactor build method to use RecursiveCharacterTextSplitter from langchain.text_splitter
🔧 refactor(LanguageRecursiveTextSplitter.py): refactor build method to split documents using RecursiveCharacterTextSplitter and return the chunks
2023-08-24 22:24:07 -03:00
Gabriel Luiz Freitas Almeida
86730437a5 feat(RecursiveCharacterTextSplitter.py): add RecursiveCharacterTextSplitter component to split text into chunks of a specified length 2023-08-24 22:23:45 -03:00
Gabriel Luiz Freitas Almeida
383c9dc5ff 📝 docs(text-splitters.mdx): improve formatting and add missing information about LanguageRecursiveTextSplitter and its parameters
🐛 fix(text-splitters.mdx): fix typo in the description of `separators` parameter in `RecursiveCharacterTextSplitter`
2023-08-24 22:23:27 -03:00
Gabriel Luiz Freitas Almeida
40ab6b1e87 🔥 refactor(config.yaml): remove RecursiveCharacterTextSplitter from the config file as it is no longer used
📚 docs(config.yaml): update documentation link for CharacterTextSplitter in the config file
2023-08-24 22:22:31 -03:00
Gabriel Luiz Freitas Almeida
95ff2a7f6b 🔧 chore(util.py): add missing import for 'Document' from langchain.schema
🔧 chore(util.py): add missing type hint for 'documents' parameter in build_loader_repr_from_documents function
🔧 chore(util.py): add logic to calculate average document length and display summary information in build_loader_repr_from_documents function
2023-08-24 22:22:09 -03:00
Gabriel Luiz Freitas Almeida
f950bd8a2c
Added readme for docker example (#815) 2023-08-25 00:25:12 +00:00
Gabriel Luiz Freitas Almeida
6de92ea788
Fixes bug in websocket and updates dependencies (#816) 2023-08-25 00:23:40 +00:00
Gabriel Luiz Freitas Almeida
04b14747a2
Merge branch 'main' into release 2023-08-25 00:23:28 +00:00