canvas 0.22.0__tar.gz → 0.22.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of canvas might be problematic. Click here for more details.
- {canvas-0.22.0 → canvas-0.22.1}/PKG-INFO +1 -1
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/protocol/tests.py +10 -1
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/test_utils.py +4 -1
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/banner_alert/tests.py +10 -2
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/installation.py +1 -2
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/plugin_runner.py +34 -2
- {canvas-0.22.0 → canvas-0.22.1}/pyproject.toml +1 -1
- {canvas-0.22.0 → canvas-0.22.1}/.gitignore +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/auth/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/auth/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/auth/utils.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/emit.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ALLERGY_INTOLERANCE_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CANCELED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CHECKED_IN.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_NO_SHOWED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESCHEDULED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESTORED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__CONDITION_SELECTED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ASSESS_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_ASSESSED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CRON.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_STATEMENT_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_LIST_ITEM_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/MEDICATION_STATEMENT__MEDICATION__POST_SEARCH.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/PATIENT_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/PATIENT_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/PLAN_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_COMMIT.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__POST_UPDATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_COMMIT.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_ORIGINATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE_COMMAND__PRE_UPDATE.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/QUESTIONNAIRE__QUESTIONNAIRE__POST_SEARCH.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/TASK_COMMENT_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/TASK_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/TASK_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_CREATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_UPDATED.ndjson +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/logs/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/logs/logs.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/plugin/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/plugin/plugin.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/plugin/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/run_plugins/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/run_plugins/run_plugins.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/conftest.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/main.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/application/cookiecutter.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/applications/my_application.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/application/{{ cookiecutter.__project_slug }}/assets/python-logo.png +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/default/cookiecutter.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/templates/plugins/default/{{ cookiecutter.__project_slug }}/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/context/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/context/context.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/context/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/print/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/print/print.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/print/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/urls/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/urls/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/urls/urls.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/validators/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/validators/manifest_schema.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/validators/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_cli/utils/validators/validators.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/effects_pb2.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/effects_pb2.pyi +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/effects_pb2_grpc.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/events_pb2.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/events_pb2.pyi +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/events_pb2_grpc.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/plugins_pb2.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/plugins_pb2.pyi +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/messages/plugins_pb2_grpc.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/services/plugin_runner_pb2.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/services/plugin_runner_pb2.pyi +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_generated/services/plugin_runner_pb2_grpc.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/adjust_prescription.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/allergy.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/assess.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/close_goal.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/diagnose.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/exam.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/family_history.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/follow_up.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/goal.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/history_present_illness.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/imaging_order.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/instruct.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/lab_order.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/medical_history.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/medication_statement.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/past_surgical_history.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/perform.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/plan.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/prescribe.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/questionnaire/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/questionnaire/question.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/reason_for_visit.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/refer.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/refill.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/remove_allergy.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/resolve_condition.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/review_of_systems.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/stop_medication.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/structured_assessment.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/task.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/update_diagnosis.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/update_goal.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/commands/vitals.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/constants.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/protocol/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/schema/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/schema/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/test_base_command.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/unit/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/commands/tests/unit/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/banner_alert/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/banner_alert/add_banner_alert.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/banner_alert/remove_banner_alert.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/billing_line_item/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/billing_line_item/add_billing_line_item.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/billing_line_item/remove_billing_line_item.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/billing_line_item/update_billing_line_item.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/launch_modal.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/patient_chart_summary_configuration.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/patient_portal/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/patient_portal/intake_form_results.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/patient_profile_configuration.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/protocol_card/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/protocol_card/protocol_card.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/protocol_card/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/questionnaire_result.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/show_button.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/surescripts/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/surescripts/surescripts_messages.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/task/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/effects/task/task.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/events/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/events/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/handlers/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/handlers/action_button.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/handlers/application.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/handlers/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/handlers/cron_task.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/protocols/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/protocols/clinical_quality_measure.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/protocols/timeframe.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/questionnaires/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/questionnaires/tests/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/questionnaires/tests/test_utils.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/questionnaires/utils.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/templates/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/templates/tests/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/templates/tests/test_utils.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/templates/utils.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/tests/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/utils/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/utils/http.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/utils/plugins.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/utils/stats.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/utils/tests.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/apps.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/allergy_intolerance.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/appointment.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/assessment.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/billing.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/care_team.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/command.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/common.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/condition.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/coverage.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/detected_issue.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/device.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/imaging.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/lab.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/medication.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/note.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/observation.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/organization.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/patient.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/practicelocation.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/protocol_override.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/questionnaire.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/reason_for_visit.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/staff.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/task.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/team.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/data/user.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/v1/models.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/custom.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/hcc2018.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/tests/test_value_sets.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/adverse_event.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/allergy.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/assessment.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/communication.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/condition.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/device.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/diagnostic_study.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/encounter.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/immunization.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/individual_characteristic.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/intervention.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/laboratory_test.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/medication.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/physical_exam.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/procedure.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/v2022/symptom.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/value_set/value_set.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/canvas_sdk/views/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/logger/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/logger/logger.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/authentication.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/aws_headers.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/exceptions.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/sandbox.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/data/plugins/.gitkeep +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/example_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/example_plugin/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/example_plugin/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/example_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/templates/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/templates/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/utils/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_implicit_imports_plugin/utils/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_load_questionnaire/questionnaires/example_questionnaire.yml +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/other_module/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/other_module/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/other_module/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/other_module/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_forbidden_imports_runtime_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/other_module/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v1/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/other_module/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v2/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/other_module/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_outside_plugin_v3/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/other_module/base.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_module_imports_plugin/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_render_template/CANVAS_MANIFEST.json +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_render_template/README.md +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_render_template/protocols/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_render_template/protocols/my_protocol.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/fixtures/plugins/test_render_template/templates/template.html +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/test_application.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/test_plugin_installer.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/test_plugin_runner.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/plugin_runner/tests/test_sandbox.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/protobufs/canvas_generated/messages/effects.proto +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/protobufs/canvas_generated/messages/events.proto +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/protobufs/canvas_generated/messages/plugins.proto +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/protobufs/canvas_generated/services/plugin_runner.proto +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/pubsub/__init__.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/pubsub/pubsub.py +0 -0
- {canvas-0.22.0 → canvas-0.22.1}/settings.py +0 -0
|
@@ -49,7 +49,16 @@ def write_and_install_protocol_and_clean_up(
|
|
|
49
49
|
f"Loading plugin '{plugin_name}",
|
|
50
50
|
)
|
|
51
51
|
install_plugin(plugin_name, token)
|
|
52
|
-
message_received_event.wait(timeout=
|
|
52
|
+
message_received_event.wait(timeout=15.0)
|
|
53
|
+
|
|
54
|
+
# unfortunately sometimes the log websocket just doesn't return any
|
|
55
|
+
# messages, so asserting on the state of the timeout here causes failures
|
|
56
|
+
# even though the delay itself will cause the waiting test to pass (because
|
|
57
|
+
# the plugin has been loaded).
|
|
58
|
+
# timeout_not_hit = message_received_event.wait(timeout=15.0)
|
|
59
|
+
# if not timeout_not_hit:
|
|
60
|
+
# ws.close()
|
|
61
|
+
# assert timeout_not_hit, f"plugin loading message timeout hit: Loading plugin '{plugin_name}"
|
|
53
62
|
|
|
54
63
|
yield
|
|
55
64
|
|
|
@@ -367,6 +367,9 @@ def wait_for_log(
|
|
|
367
367
|
thread = threading.Thread(target=ws.run_forever)
|
|
368
368
|
thread.start()
|
|
369
369
|
|
|
370
|
-
connected_event.wait(timeout=5.0)
|
|
370
|
+
timeout_not_hit = connected_event.wait(timeout=5.0)
|
|
371
|
+
if not timeout_not_hit:
|
|
372
|
+
ws.close()
|
|
373
|
+
assert timeout_not_hit, "connection timeout hit"
|
|
371
374
|
|
|
372
375
|
return message_received_event, thread, ws
|
|
@@ -107,8 +107,16 @@ class Protocol(BaseProtocol):
|
|
|
107
107
|
)
|
|
108
108
|
response.raise_for_status()
|
|
109
109
|
|
|
110
|
-
message_received_event.wait(timeout=
|
|
111
|
-
|
|
110
|
+
message_received_event.wait(timeout=15.0)
|
|
111
|
+
|
|
112
|
+
# unfortunately sometimes the log websocket just doesn't return any
|
|
113
|
+
# messages, so asserting on the state of the timeout here causes failures
|
|
114
|
+
# even though the delay itself will cause the waiting test to pass (because
|
|
115
|
+
# the plugin has been loaded).
|
|
116
|
+
# timeout_not_hit = message_received_event.wait(timeout=15.0)
|
|
117
|
+
# if not timeout_not_hit:
|
|
118
|
+
# ws.close()
|
|
119
|
+
# assert timeout_not_hit, f"plugin loading message timeout hit: Loading plugin '{plugin_name}"
|
|
112
120
|
yield
|
|
113
121
|
|
|
114
122
|
ws.close()
|
|
@@ -137,7 +137,7 @@ def download_plugin(plugin_package: str) -> Generator[Path, None, None]:
|
|
|
137
137
|
def install_plugin(plugin_name: str, attributes: PluginAttributes) -> None:
|
|
138
138
|
"""Install the given Plugin's package into the runtime."""
|
|
139
139
|
try:
|
|
140
|
-
log.info(f'Installing plugin "{plugin_name}"')
|
|
140
|
+
log.info(f'Installing plugin "{plugin_name}", version {attributes["version"]}')
|
|
141
141
|
|
|
142
142
|
plugin_installation_path = Path(PLUGIN_DIRECTORY) / plugin_name
|
|
143
143
|
|
|
@@ -224,7 +224,6 @@ def install_plugins() -> None:
|
|
|
224
224
|
|
|
225
225
|
for plugin_name, attributes in enabled_plugins().items():
|
|
226
226
|
try:
|
|
227
|
-
log.info(f'Installing plugin "{plugin_name}", version {attributes["version"]}')
|
|
228
227
|
install_plugin(plugin_name, attributes)
|
|
229
228
|
except PluginInstallationError:
|
|
230
229
|
disable_plugin(plugin_name)
|
|
@@ -13,6 +13,8 @@ from typing import Any, TypedDict
|
|
|
13
13
|
|
|
14
14
|
import grpc
|
|
15
15
|
import redis.asyncio as redis
|
|
16
|
+
from asgiref.sync import sync_to_async
|
|
17
|
+
from django.db import connections
|
|
16
18
|
|
|
17
19
|
from canvas_generated.messages.effects_pb2 import EffectType
|
|
18
20
|
from canvas_generated.messages.plugins_pb2 import ReloadPluginsRequest, ReloadPluginsResponse
|
|
@@ -30,6 +32,7 @@ from plugin_runner.installation import install_plugins
|
|
|
30
32
|
from plugin_runner.sandbox import Sandbox
|
|
31
33
|
from settings import (
|
|
32
34
|
CHANNEL_NAME,
|
|
35
|
+
IS_TESTING,
|
|
33
36
|
MANIFEST_FILE_NAME,
|
|
34
37
|
PLUGIN_DIRECTORY,
|
|
35
38
|
REDIS_ENDPOINT,
|
|
@@ -103,6 +106,25 @@ class PluginManifest(TypedDict):
|
|
|
103
106
|
readme: str
|
|
104
107
|
|
|
105
108
|
|
|
109
|
+
@sync_to_async
|
|
110
|
+
def reconnect_if_needed() -> None:
|
|
111
|
+
"""
|
|
112
|
+
Reconnect to the database if the connection has been closed.
|
|
113
|
+
|
|
114
|
+
NOTE: Django database functions are not async-safe and must be called
|
|
115
|
+
via e.g. sync_to_async. They will silently fail and block the handler
|
|
116
|
+
if called in an async context directly.
|
|
117
|
+
"""
|
|
118
|
+
if IS_TESTING:
|
|
119
|
+
return
|
|
120
|
+
|
|
121
|
+
connection = connections["default"]
|
|
122
|
+
|
|
123
|
+
if not connection.is_usable():
|
|
124
|
+
log.debug("Connection was unusable, reconnecting...")
|
|
125
|
+
connection.connect()
|
|
126
|
+
|
|
127
|
+
|
|
106
128
|
class PluginRunner(PluginRunnerServicer):
|
|
107
129
|
"""This process runs provided plugins that register interest in incoming events."""
|
|
108
130
|
|
|
@@ -118,6 +140,11 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
118
140
|
event_name = event.name
|
|
119
141
|
relevant_plugins = EVENT_HANDLER_MAP[event_name]
|
|
120
142
|
|
|
143
|
+
log.debug(f"Processing {relevant_plugins} for {event_name}")
|
|
144
|
+
|
|
145
|
+
if relevant_plugins:
|
|
146
|
+
await reconnect_if_needed()
|
|
147
|
+
|
|
121
148
|
if event_type in [EventType.PLUGIN_CREATED, EventType.PLUGIN_UPDATED]:
|
|
122
149
|
plugin_name = event.target.id
|
|
123
150
|
# filter only for the plugin(s) that were created/updated
|
|
@@ -126,6 +153,8 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
126
153
|
effect_list = []
|
|
127
154
|
|
|
128
155
|
for plugin_name in relevant_plugins:
|
|
156
|
+
log.debug(f"Processing {plugin_name}")
|
|
157
|
+
|
|
129
158
|
plugin = LOADED_PLUGINS[plugin_name]
|
|
130
159
|
handler_class = plugin["class"]
|
|
131
160
|
base_plugin_name = plugin_name.split(":")[0]
|
|
@@ -142,7 +171,7 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
142
171
|
)
|
|
143
172
|
|
|
144
173
|
compute_start_time = time.time()
|
|
145
|
-
_effects = await
|
|
174
|
+
_effects = await sync_to_async(handler.compute)()
|
|
146
175
|
effects = [
|
|
147
176
|
Effect(
|
|
148
177
|
type=effect.type,
|
|
@@ -166,9 +195,12 @@ class PluginRunner(PluginRunnerServicer):
|
|
|
166
195
|
tags={"plugin": plugin_name},
|
|
167
196
|
)
|
|
168
197
|
except Exception as e:
|
|
198
|
+
log.error(f"Encountered exception in plugin {plugin_name}:")
|
|
199
|
+
|
|
169
200
|
for error_line_with_newlines in traceback.format_exception(e):
|
|
170
201
|
for error_line in error_line_with_newlines.split("\n"):
|
|
171
202
|
log.error(error_line)
|
|
203
|
+
|
|
172
204
|
continue
|
|
173
205
|
|
|
174
206
|
effect_list += effects
|
|
@@ -204,7 +236,7 @@ async def synchronize_plugins(run_once: bool = False) -> None:
|
|
|
204
236
|
"""
|
|
205
237
|
log.info(f'synchronize_plugins: listening for messages on pubsub channel "{CHANNEL_NAME}"')
|
|
206
238
|
|
|
207
|
-
|
|
239
|
+
_, pubsub = get_client()
|
|
208
240
|
await pubsub.psubscribe(CHANNEL_NAME)
|
|
209
241
|
|
|
210
242
|
while True:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CANCELED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CHECKED_IN.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_NO_SHOWED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESCHEDULED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_RESTORED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/APPOINTMENT_UPDATED.ndjson
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/BILLING_LINE_ITEM_UPDATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_ASSESSED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/CONDITION_UPDATED.ndjson
RENAMED
|
File without changes
|
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/ENCOUNTER_UPDATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_CREATED.ndjson
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/IMMUNIZATION_UPDATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/INTERVIEW_UPDATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/LAB_ORDER_UPDATED.ndjson
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/TASK_COMMENT_CREATED.ndjson
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_CREATED.ndjson
RENAMED
|
File without changes
|
{canvas-0.22.0 → canvas-0.22.1}/canvas_cli/apps/emit/event_fixtures/VITAL_SIGN_UPDATED.ndjson
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|