conductor-python
conductor-python copied to clipboard
Feature migrate adapters to facade pattern
Changes:
- Refactored ResourcApis to use facade pattern
- Updated Orkes clients to serialize objects returned from codegen to python models
- Added deprecation warnings for methods in Orkes clients and for attributes in OrkesBaseClient
Deprecated functionality:
- Asynchronous OrkesAuthorizationClient (
src/conductor/asyncio_client/orkes/orkes_authorization_client.py):
create_user()- replaced withcreate_user_validated()(returns a validatedConductorUserAdapter)update_user()- replaced withupdate_user_validated()(returns a validatedConductorUserAdapter)create_group()- replaced withcreate_group_validated()(returns a validatedGroupAdapter)add_user_to_group()- replaced withadd_user_to_group_validated()(returnsNoneinstead ofobject)remove_user_from_group()- replaced withremove_user_from_group_validated()(returnsNoneinstead ofobject)get_users_in_group()- replaced withget_users_in_group_validated()(returns a validatedList[ConductorUserAdapter])grant_permissions()- replaced withgrant_permissions_validated()(returnsNoneinstead ofobject)remove_permissions()- replaced withremove_permissions_validated()(returnsNoneinstead ofobject)get_permissions()- replaced withget_permissions_validated()(returns a validatedDict[str, List[SubjectRefAdapter]])create_access_key()- replaced withcreate_access_key_validated()(returns a validatedCreatedAccessKeyAdapter)get_access_keys()- replaced withget_access_keys_validated()(returns a validatedList[AccessKeyAdapter])toggle_access_key_status()- replaced withtoggle_access_key_status_validated()(returns a validatedAccessKeyAdapter)
- Asynchronous OrkesMetadataClient (
src/conductor/asyncio_client/orkes/orkes_metadata_client.py):
register_task_def()- replaced withregister_task_def_validated()(task_defargument was renamed toextended_task_defand its type changed fromExtendedTaskDefAdaptertoList[ExtendedTaskDefAdapter])get_task_def()- replaced withget_task_def_validated()(returns a validatedTaskDefAdapter)create_workflow_def()- replaced withcreate_workflow_def_validated()(returnsNoneinstead ofobject)update_workflow_defs()- replaced withupdate_workflow_defs_validated()(returnsNoneinstead ofobject)register_workflow_def()- replaced withregister_workflow_def_validated()(returnsNoneinstead ofobject)update_workflow_def()- replaced withasync def update_workflow_def_validated()(returnsNoneinstead ofobject)
- Asynchronous OrkesPromptClient (
src/conductor/asyncio_client/orkes/orkes_prompt_client.py):
put_tag_for_prompt_template()- replaced withupdate_tag_for_prompt_template()(renamed to follow naming from Synchronous OrkesPromptClient)
- Asynchronous OrkesSchedulerClient (
src/conductor/asyncio_client/orkes/orkes_scheduler_client.py):
save_schedule()- replaced withsave_schedule_validated()(returnsNoneinstead ofobject)delete_schedule()- replaced withdelete_schedule_validated()(returnsNoneinstead ofobject)pause_schedule()- replaced withpause_schedule_validated()(returnsNoneinstead ofobject)resume_schedule()- replaced withresume_schedule_validated()(returnsNoneinstead ofobject)pause_all_schedules()- replaced withpause_all_schedules_validated()(returnsNoneinstead ofDict[str, object])resume_all_schedules()- replaced withresume_all_schedules_validated()(returnsNoneinstead ofobject)search_schedules()- replaced withsearch_schedule_executions()(renamed to follow naming from Synchronous OrkesSchedulerClient)get_next_few_schedules()- replaced withget_next_few_schedule_execution_times()(renamed to follow naming from Synchronous OrkesSchedulerClient)put_tag_for_schedule()- replaced withset_tags_for_schedule()(renamed to follow naming from Synchronous OrkesSchedulerClient)get_tags_for_schedule()- replaced withget_scheduler_tags()(renamed to follow naming from Synchronous OrkesSchedulerClient)delete_tag_for_schedule()- replaced withdelete_scheduler_tags()(renamed to follow naming from Synchronous OrkesSchedulerClient)requeue_all_execution_records()- replaced withrequeue_all_execution_records_validated()(returnsNoneinstead ofDict[str, object])create_schedule()- replaced withcreate_schedule_validated()(returnsNoneinstead ofobject)update_schedule()- replaced withupdate_schedule_validated()(returnsNoneinstead ofobject)
- Asynchronous OrkesSchemaClient (
src/conductor/asyncio_client/orkes/orkes_schema_client.py):
save_schemas()- replaced withregister_schemas()(renamed to follow naming from Synchronous OrkesSchemaClient)save_schema()- replaced withregister_schema()(renamed to follow naming from Synchronous OrkesSchemaClient)
- Asynchronous OrkesSecretClient (
src/conductor/asyncio_client/orkes/orkes_secret_client.py):
put_secret()- replaced withput_secret_validated()(returnsNoneinstead ofobject)delete_secret()- replaced withdelete_secret_validated()(returnsNoneinstead ofobject)secret_exists()- replaced withsecret_exists_validated()(returnsboolinstead ofobject)clear_local_cache()- replaced withclear_local_cache_validated()(returnsNoneinstead ofDict[str, str])clear_redis_cache()- replaced withclear_redis_cache_validated()(returnsNoneinstead ofDict[str, str])update_secret()- replaced withupdate_secret_validated()(returnsNoneinstead ofDict[str, str])has_secret()- replaced withhas_secret_validated()(returnsboolinstead ofobject)
- Asynchronous OrkesTaskClient (
src/conductor/asyncio_client/orkes/orkes_task_client.py):
poll_for_task()- replaced withpoll_task()(renamed to follow naming from Synchronous OrkesTaskClient)poll_for_task_batch()- replaced withbatch_poll_tasks()(renamed to follow naming from Synchronous OrkesTaskClient)get_poll_data()- replaced withget_task_poll_data()(renamed to follow naming from Synchronous OrkesTaskClient)log_task()- replaced withadd_task_log()(renamed to follow naming from Synchronous OrkesTaskClient)get_queue_size_for_task_type()- replaced withget_queue_size_for_task()(renamed to follow naming from Synchronous OrkesTaskClient)
- Asynchronous OrkesWorkflowClient (
src/conductor/asyncio_client/orkes/orkes_workflow_client.py):
decide_workflow()- replaced withdecide()(renamed to follow naming from Synchronous OrkesWorkflowClient)
- Synchronous OrkesMetadataClient (
src/conductor/client/orkes/orkes_metadata_client.py):
register_workflow_def()- replaced withregister_workflow_def_validated()(returnsNoneinstead ofobject)update_workflow_def()- replaced withupdate_workflow_def_validated()(returnsNoneinstead ofobject)register_task_def()- replaced withregister_task_def_validated()(returnsNoneinstead ofobject)get_task_def()- replaced withget_task_def_validated()(returns a validatedTaskDef)get_workflow_tags()- replaced withget_workflow_tags_validated()(returns a validatedList[Tag])addTaskTag()- replaced withadd_task_tag()(renamed to follow snake_case)deleteTaskTag()- replaced withdelete_task_tag()(renamed to follow snake_case)getTaskTags()- replaced withget_task_tags()(renamed to follow snake_case)setTaskTags()- replaced withset_task_tags()(renamed to follow snake_case)setWorkflowRateLimit()- replaced withset_workflow_rate_limit()(renamed to follow snake_case)getWorkflowRateLimit()- replaced withget_workflow_rate_limit()(renamed to follow snake_case)removeWorkflowRateLimit()- replaced withremove_workflow_rate_limit()(renamed to follow snake_case)
- Synchronous OrkesSchedulerClient (
src/conductor/client/orkes/orkes_scheduler_client.py):
set_scheduler_tags()- replaced withset_scheduler_tags_validated()(tagstype changed fromList[MetadataTag]toList[Tag])delete_scheduler_tags()- replaced withdelete_scheduler_tags_validated()(tagstype changed fromList[MetadataTag]toList[Tag])
- Synchronous OrkesSchemaClient (
src/conductor/client/orkes/orkes_schema_client.py):
delete_schema()- replaced withdelete_schema_by_name_and_version()(renamed to make naming more informative)
- Synchronous OrkesSecretClient (
src/conductor/client/orkes/orkes_secret_client.py):
list_all_secret_names()- replaced withlist_all_secret_names_validated()(returnsList[str]instead ofSet[str])
- Synchronous OrkesWorkflowClient (
src/conductor/client/orkes/orkes_workflow_client.py):
start_workflow_by_name()- replaced withstart_workflow_by_name_validated()(renamedcorrelationIdargument tocorrelation_id)
- OrkesBaseClient (
src/conductor/client/orkes/orkes_base_client.pyandsrc/conductor/asyncio_client/orkes/orkes_base_client.py):
All legacy *ResourceApi attributes (e.g. metadataResourceApi, workflowResourceApi, taskResourceApi, etc.) are now deprecated. Each of these APIs now has a dedicated facade client that should be used instead:
- OrkesMetadataClient
- OrkesWorkflowClient
- OrkesTaskClient
- OrkesAuthorizationClient
- OrkesSchedulerClient
- OrkesSecretClient
- OrkesTagsClient
- OrkesIntegrationClient
- OrkesPromptClient
- OrkesSchemaClient
- OrkesServiceRegistryClient
- OrkesEventClient
All deprecated attributes now emit DeprecationWarning and are annotated with @deprecated and @typing_deprecated.
- Added docstrings for methods in Orkes clients
- Added unit and integration tests for new methods
Reason: Improve code quality and user experience
Codecov Report
:x: Patch coverage is 77.93881% with 548 lines in your changes missing coverage. Please review.
| Files with missing lines | Coverage Δ | |
|---|---|---|
| ...io_client/adapters/api/application_resource_api.py | 100.00% <100.00%> (+2.70%) |
:arrow_up: |
| ..._client/adapters/api/authorization_resource_api.py | 100.00% <100.00%> (ø) |
|
| ...asyncio_client/adapters/api/schema_resource_api.py | 100.00% <100.00%> (ø) |
|
| ...yncio_client/adapters/models/access_key_adapter.py | 100.00% <100.00%> (ø) |
|
| ...ient/adapters/models/created_access_key_adapter.py | 100.00% <100.00%> (ø) |
|
| ...lient/adapters/models/workflow_schedule_adapter.py | 89.47% <100.00%> (ø) |
|
| ...adapters/models/workflow_schedule_model_adapter.py | 89.47% <100.00%> (ø) |
|
| src/conductor/asyncio_client/adapters/utils.py | 100.00% <100.00%> (ø) |
|
| ...ctor/asyncio_client/configuration/configuration.py | 97.67% <ø> (ø) |
|
| src/conductor/asyncio_client/event/event_client.py | 86.36% <ø> (ø) |
|
| ... and 106 more |
... and 7 files with indirect coverage changes
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.