SYMBOL INDEX (1296 symbols across 254 files) FILE: api/account/account_api/endpoints/change_email_address.py class EmailAddressChangeEndpoint (line 34) | class EmailAddressChangeEndpoint(SeleneEndpoint): method put (line 37) | def put(self): method _validate_request (line 46) | def _validate_request(self) -> str: method _send_notification (line 60) | def _send_notification(self): method _send_verification_email (line 74) | def _send_verification_email(new_email_address): FILE: api/account/account_api/endpoints/change_password.py class PasswordChangeEndpoint (line 25) | class PasswordChangeEndpoint(CommonPasswordChangeEndpoint): method account_id (line 29) | def account_id(self): method _send_email (line 32) | def _send_email(self): FILE: api/account/account_api/endpoints/city.py class CityEndpoint (line 26) | class CityEndpoint(SeleneEndpoint): method get (line 29) | def get(self): FILE: api/account/account_api/endpoints/country.py class CountryEndpoint (line 26) | class CountryEndpoint(SeleneEndpoint): method get (line 27) | def get(self): FILE: api/account/account_api/endpoints/defaults.py class DefaultsRequest (line 32) | class DefaultsRequest(Model): class AccountDefaultsEndpoint (line 43) | class AccountDefaultsEndpoint(SeleneEndpoint): method __init__ (line 46) | def __init__(self): method get (line 50) | def get(self): method _get_defaults (line 63) | def _get_defaults(self): method post (line 70) | def post(self): method patch (line 78) | def patch(self): method _validate_request (line 86) | def _validate_request(self) -> dict: method _upsert_defaults (line 100) | def _upsert_defaults(self, defaults: dict): FILE: api/account/account_api/endpoints/device.py function validate_pairing_code (line 52) | def validate_pairing_code(pairing_code): class UpdateDeviceRequest (line 62) | class UpdateDeviceRequest(Model): class NewDeviceRequest (line 78) | class NewDeviceRequest(UpdateDeviceRequest): class DeviceEndpoint (line 88) | class DeviceEndpoint(SeleneEndpoint): method __init__ (line 93) | def __init__(self): method device_repository (line 108) | def device_repository(self): method get (line 115) | def get(self, device_id: str): method _get_devices (line 125) | def _get_devices(self) -> List[dict]: method _get_device (line 138) | def _get_device(self, device_id: str) -> dict: method _format_device_for_response (line 149) | def _format_device_for_response(self, device: Device) -> dict: method _format_pantacor_config (line 168) | def _format_pantacor_config(self, config) -> dict[str, str]: method _format_device_status (line 187) | def _format_device_status(self, device: Device) -> tuple[str, Optional... method _get_device_last_contact (line 202) | def _get_device_last_contact(self, device: Device) -> timedelta: method _determine_device_status (line 233) | def _determine_device_status(last_contact_age: timedelta) -> str: method _determine_disconnect_duration (line 249) | def _determine_disconnect_duration(last_contact_age: timedelta) -> str: method post (line 270) | def post(self): method _pair_device (line 279) | def _pair_device(self): method _get_pairing_data (line 290) | def _get_pairing_data(self, cache_key) -> dict: method _add_device (line 300) | def _add_device(self) -> str: method _build_pairing_token (line 310) | def _build_pairing_token(self, pairing_data: dict): method delete (line 321) | def delete(self, device_id: str): method _delete_device (line 331) | def _delete_device(self, device_id: str): method patch (line 342) | def patch(self, device_id: str): method _validate_request (line 356) | def _validate_request(self): method _ensure_geography_exists (line 372) | def _ensure_geography_exists(self): method _update_device (line 391) | def _update_device(self, device_id: str): method _update_pantacor_config (line 408) | def _update_pantacor_config(self, device: Device): method _convert_release_channel (line 426) | def _convert_release_channel(self, release_channel: str) -> str: FILE: api/account/account_api/endpoints/device_count.py class DeviceCountEndpoint (line 25) | class DeviceCountEndpoint(SeleneEndpoint): method get (line 26) | def get(self): method _get_devices (line 32) | def _get_devices(self): FILE: api/account/account_api/endpoints/geography.py class GeographyEndpoint (line 26) | class GeographyEndpoint(SeleneEndpoint): method get (line 27) | def get(self): method _build_response_data (line 33) | def _build_response_data(self): FILE: api/account/account_api/endpoints/membership.py class MembershipEndpoint (line 26) | class MembershipEndpoint(SeleneEndpoint): method get (line 27) | def get(self): FILE: api/account/account_api/endpoints/pairing_code.py class PairingCodeEndpoint (line 25) | class PairingCodeEndpoint(SeleneEndpoint): method __init__ (line 26) | def __init__(self): method get (line 30) | def get(self, pairing_code): method _get_pairing_data (line 36) | def _get_pairing_data(self, pairing_code: str) -> bool: FILE: api/account/account_api/endpoints/preferences.py class PreferencesRequest (line 31) | class PreferencesRequest(Model): class PreferencesEndpoint (line 37) | class PreferencesEndpoint(SeleneEndpoint): method __init__ (line 38) | def __init__(self): method get (line 44) | def get(self): method _get_preferences (line 56) | def _get_preferences(self): method post (line 60) | def post(self): method patch (line 67) | def patch(self): method _validate_request (line 74) | def _validate_request(self): method _upsert_preferences (line 81) | def _upsert_preferences(self): FILE: api/account/account_api/endpoints/region.py class RegionEndpoint (line 26) | class RegionEndpoint(SeleneEndpoint): method get (line 27) | def get(self): FILE: api/account/account_api/endpoints/skill_oauth.py class SkillOauthEndpoint (line 27) | class SkillOauthEndpoint(SeleneEndpoint): method __init__ (line 28) | def __init__(self): method get (line 32) | def get(self, oauth_id): method _get_oauth_url (line 36) | def _get_oauth_url(self, oauth_id): FILE: api/account/account_api/endpoints/skill_settings.py class SkillSettingsEndpoint (line 30) | class SkillSettingsEndpoint(SeleneEndpoint): method __init__ (line 33) | def __init__(self): method setting_repository (line 42) | def setting_repository(self): method get (line 49) | def get(self, skill_family_name): method _parse_selection_options (line 66) | def _parse_selection_options(self): method _build_response_data (line 87) | def _build_response_data(self): method put (line 104) | def put(self, skill_family_name): method _update_settings_values (line 111) | def _update_settings_values(self): FILE: api/account/account_api/endpoints/skills.py class SkillsEndpoint (line 26) | class SkillsEndpoint(SeleneEndpoint): method get (line 27) | def get(self): method _build_response_data (line 33) | def _build_response_data(self): FILE: api/account/account_api/endpoints/software_update.py class SoftwareUpdateRequest (line 29) | class SoftwareUpdateRequest(Model): class SoftwareUpdateEndpoint (line 35) | class SoftwareUpdateEndpoint(SeleneEndpoint): method patch (line 38) | def patch(self): method _validate_request (line 45) | def _validate_request(self): FILE: api/account/account_api/endpoints/ssh_key_validator.py class SshKeyValidatorEndpoint (line 27) | class SshKeyValidatorEndpoint(SeleneEndpoint): method get (line 30) | def get(self): FILE: api/account/account_api/endpoints/timezone.py class TimezoneEndpoint (line 26) | class TimezoneEndpoint(SeleneEndpoint): method get (line 27) | def get(self): FILE: api/account/account_api/endpoints/verify_email_address.py class VerifyEmailAddressEndpoint (line 30) | class VerifyEmailAddressEndpoint(SeleneEndpoint): method put (line 33) | def put(self): method _validate_email_address (line 41) | def _validate_email_address(self) -> str: method _update_account (line 59) | def _update_account(self, email_address: str): FILE: api/account/account_api/endpoints/voice_endpoint.py class VoiceEndpoint (line 26) | class VoiceEndpoint(SeleneEndpoint): method get (line 27) | def get(self): FILE: api/account/account_api/endpoints/wake_word_endpoint.py class WakeWordEndpoint (line 27) | class WakeWordEndpoint(SeleneEndpoint): method get (line 30) | def get(self): method _build_response_data (line 37) | def _build_response_data(self): FILE: api/account/tests/features/environment.py function acct_api_client (line 37) | def acct_api_client(context): function before_all (line 46) | def before_all(context): function after_all (line 58) | def after_all(context): function before_scenario (line 70) | def before_scenario(context, _): function after_scenario (line 82) | def after_scenario(context, _): function _clean_cache (line 97) | def _clean_cache(): FILE: api/account/tests/features/steps/add_device.py function set_device_pairing_code (line 35) | def set_device_pairing_code(context): function add_device (line 53) | def add_device(context): function validate_pairing_code_removal (line 73) | def validate_pairing_code_removal(context): function validate_response (line 83) | def validate_response(context): function validate_pairing_token (line 101) | def validate_pairing_token(context): FILE: api/account/tests/features/steps/agreements.py function call_agreement_endpoint (line 30) | def call_agreement_endpoint(context, agreement): function validate_response (line 42) | def validate_response(context, agreement, version): FILE: api/account/tests/features/steps/authentication.py function use_account_with_valid_access_token (line 36) | def use_account_with_valid_access_token(context): function generate_expired_access_token (line 45) | def generate_expired_access_token(context): function generate_refresh_token_only (line 55) | def generate_refresh_token_only(context): function expire_both_tokens (line 63) | def expire_both_tokens(context): function check_for_no_new_cookie (line 72) | def check_for_no_new_cookie(context): function check_for_new_cookies (line 78) | def check_for_new_cookies(context): FILE: api/account/tests/features/steps/common.py function define_account (line 34) | def define_account(context): function use_account_with_valid_access_token (line 39) | def use_account_with_valid_access_token(context): function check_request_success (line 47) | def check_request_success(context): function check_for_bad_request (line 54) | def check_for_bad_request(context, error_type): FILE: api/account/tests/features/steps/pantacor_update.py function add_pantacor_device (line 31) | def add_pantacor_device(context): function add_pantacor_deployment_id (line 40) | def add_pantacor_deployment_id(context): function apply_software_update (line 46) | def apply_software_update(context): function validate_invalid_ssh_key (line 67) | def validate_invalid_ssh_key(context): function validate_valid_ssh_key (line 76) | def validate_valid_ssh_key(context): function get_device (line 86) | def get_device(context): function check_for_deployment_id (line 106) | def check_for_deployment_id(context): function check_for_malformed_ssh_key (line 116) | def check_for_malformed_ssh_key(context): function check_for_well_formed_ssh_key (line 123) | def check_for_well_formed_ssh_key(context): FILE: api/account/tests/features/steps/profile.py function add_membership_to_account (line 62) | def add_membership_to_account(context): function get_account_no_membership (line 81) | def get_account_no_membership(context): function set_account_open_dataset (line 87) | def set_account_open_dataset(context, in_or_out): function setup_user (line 97) | def setup_user(context): function call_password_change_endpoint (line 104) | def call_password_change_endpoint(context): function call_email_address_change_endpoint (line 120) | def call_email_address_change_endpoint(context): function call_email_validation_endpoint (line 139) | def call_email_validation_endpoint(context): function call_account_endpoint (line 153) | def call_account_endpoint(context): function add_monthly_membership (line 161) | def add_monthly_membership(context): function cancel_membership (line 167) | def cancel_membership(context): function _add_membership_via_api (line 177) | def _add_membership_via_api(context): function change_to_yearly_account (line 193) | def change_to_yearly_account(context): function set_open_dataset_status (line 204) | def set_open_dataset_status(context, in_or_out): function validate_response (line 216) | def validate_response(context): function validate_monthly_account (line 238) | def validate_monthly_account(context): function validate_absence_of_membership (line 251) | def validate_absence_of_membership(context): function yearly_account (line 261) | def yearly_account(context): function check_new_member_account_metrics (line 272) | def check_new_member_account_metrics(context): function check_expired_member_account_metrics (line 278) | def check_expired_member_account_metrics(context): function check_for_open_dataset_agreement (line 301) | def check_for_open_dataset_agreement(context, will_or_wont): function check_new_open_dataset_account_metrics (line 315) | def check_new_open_dataset_account_metrics(context): function check_deleted_open_dataset_account_metrics (line 321) | def check_deleted_open_dataset_account_metrics(context): function check_new_password (line 327) | def check_new_password(context): function check_for_duplicate_account_error (line 338) | def check_for_duplicate_account_error(context): function check_password_change_notification_sent (line 345) | def check_password_change_notification_sent(context): function check_email_change_notification_sent (line 362) | def check_email_change_notification_sent(context): function check_new_email_verification_sent (line 379) | def check_new_email_verification_sent(context): FILE: api/account/tests/features/steps/remove_account.py function add_wake_word_sample (line 40) | def add_wake_word_sample(context): function call_account_endpoint (line 62) | def call_account_endpoint(context): function account_deleted (line 68) | def account_deleted(context): function check_stripe (line 77) | def check_stripe(context): function check_db_for_account_metrics (line 90) | def check_db_for_account_metrics(context): function check_wake_word_file_status (line 106) | def check_wake_word_file_status(context): FILE: api/market/market_api/endpoints/available_skills.py class AvailableSkillsEndpoint (line 32) | class AvailableSkillsEndpoint(SeleneEndpoint): method __init__ (line 37) | def __init__(self): method get (line 43) | def get(self): method _get_available_skills (line 51) | def _get_available_skills(self): method _build_response_data (line 61) | def _build_response_data(self): method _filter_skills (line 70) | def _filter_skills(self) -> list: method _reformat_skills (line 92) | def _reformat_skills(self, skills_to_include: List[SkillDisplay]): method _sort_skills (line 122) | def _sort_skills(self): FILE: api/market/market_api/endpoints/skill_detail.py class SkillDetailEndpoint (line 29) | class SkillDetailEndpoint(SeleneEndpoint): method __init__ (line 34) | def __init__(self): method get (line 40) | def get(self, skill_display_id): method _get_skill_details (line 49) | def _get_skill_details(self) -> SkillDisplay: method _build_response_data (line 58) | def _build_response_data(self, skill_display: SkillDisplay): FILE: api/market/market_api/endpoints/skill_install.py class InstallRequest (line 47) | class InstallRequest(Model): class SkillInstallEndpoint (line 56) | class SkillInstallEndpoint(SeleneEndpoint): method __init__ (line 61) | def __init__(self): method settings_repo (line 68) | def settings_repo(self): method put (line 75) | def put(self): method _validate_request (line 88) | def _validate_request(self): method _get_skill_name (line 98) | def _get_skill_name(self): method _apply_update (line 110) | def _apply_update(self): method _update_skill_settings (line 126) | def _update_skill_settings(self, new_skill_settings): FILE: api/market/market_api/endpoints/skill_install_status.py class SkillInstallStatusEndpoint (line 32) | class SkillInstallStatusEndpoint(SeleneEndpoint): method __init__ (line 35) | def __init__(self): method get (line 39) | def get(self): method _get_installed_skills (line 51) | def _get_installed_skills(self): method _build_response_data (line 57) | def _build_response_data(self) -> dict: class SkillManifestAggregator (line 72) | class SkillManifestAggregator(object): method __init__ (line 75) | def __init__(self, installed_skills: List[ManifestSkill]): method aggregate_skill_status (line 79) | def aggregate_skill_status(self): method _validate_install_status (line 90) | def _validate_install_status(self): method _determine_install_status (line 100) | def _determine_install_status(self): method _determine_failure_reason (line 126) | def _determine_failure_reason(self): FILE: api/precise/precise_api/endpoints/audio_file.py class AudioFileEndpoint (line 28) | class AudioFileEndpoint(SeleneEndpoint): method get (line 31) | def get(self, file_name): FILE: api/precise/precise_api/endpoints/designation.py class DesignationEndpoint (line 41) | class DesignationEndpoint(SeleneEndpoint): method tags (line 52) | def tags(self) -> List[Tag]: method get (line 64) | def get(self): method _build_response_data (line 70) | def _build_response_data(self): method _get_designations (line 90) | def _get_designations(self) -> List[FileDesignation]: method _include_in_result (line 99) | def _include_in_result(self, tag: Tag, tag_value: TagValue) -> bool: method _get_tag (line 117) | def _get_tag(self, designation: FileDesignation) -> Tag: method _get_tag_value (line 131) | def _get_tag_value(designation: FileDesignation, tag: Tag): FILE: api/precise/precise_api/endpoints/tag.py class TagPostRequest (line 46) | class TagPostRequest(Model): class TagEndpoint (line 55) | class TagEndpoint(SeleneEndpoint): method tags (line 68) | def tags(self) -> List[Tag]: method get (line 80) | def get(self): method _ensure_session_exists (line 90) | def _ensure_session_exists(self): method _ensure_tagger_exists (line 100) | def _ensure_tagger_exists(self): method _build_response_data (line 108) | def _build_response_data(self, session_id: str): method _get_taggable_file (line 133) | def _get_taggable_file(self, wake_word: str, session_id: str) -> Tagga... method _select_tag (line 147) | def _select_tag(self, file_to_tag: TaggableFile) -> Tag: method _copy_audio_file (line 169) | def _copy_audio_file(file_to_tag: TaggableFile): method post (line 193) | def post(self): method _validate_post_request (line 201) | def _validate_post_request(self): method _add_tag (line 213) | def _add_tag(self): FILE: api/public/public_api/endpoints/audio_transcription.py class AudioTranscriptionEndpoint (line 44) | class AudioTranscriptionEndpoint(PublicEndpoint): method __init__ (line 47) | def __init__(self): method post (line 52) | def post(self): method _transcribe (line 62) | def _transcribe(self) -> Optional[str]: method _call_transcription_api (line 72) | def _call_transcription_api(self) -> Optional[speech.RecognizeResponse]: method _get_transcription (line 98) | def _get_transcription( method _add_transcription_metric (line 116) | def _add_transcription_metric(self, transcription: str): method _determine_audio_duration (line 130) | def _determine_audio_duration(self) -> float: FILE: api/public/public_api/endpoints/device.py class UpdateDevice (line 31) | class UpdateDevice(Model): class DeviceEndpoint (line 38) | class DeviceEndpoint(PublicEndpoint): method __init__ (line 41) | def __init__(self): method get (line 44) | def get(self, device_id): method patch (line 67) | def patch(self, device_id): FILE: api/public/public_api/endpoints/device_activate.py class ActivationRequest (line 40) | class ActivationRequest(Model): class DeviceActivateEndpoint (line 52) | class DeviceActivateEndpoint(PublicEndpoint): method device_repository (line 58) | def device_repository(self): method post (line 65) | def post(self): method _validate_request (line 78) | def _validate_request(self) -> dict: method _get_pairing_session (line 94) | def _get_pairing_session(self): method _activate (line 112) | def _activate(self, device_id: str, activation_request: dict): FILE: api/public/public_api/endpoints/device_code.py class DeviceCodeEndpoint (line 53) | class DeviceCodeEndpoint(PublicEndpoint): method get (line 56) | def get(self): method _build_response (line 66) | def _build_response(self): method _generate_token (line 88) | def _generate_token(): method _generate_pairing_code (line 96) | def _generate_pairing_code(): method _add_pairing_code_to_cache (line 103) | def _add_pairing_code_to_cache(self, response_data): FILE: api/public/public_api/endpoints/device_email.py class SendEmail (line 30) | class SendEmail(Model): class DeviceEmailEndpoint (line 38) | class DeviceEmailEndpoint(PublicEndpoint): method put (line 41) | def put(self, device_id): method _validate_request (line 50) | def _validate_request(self): method _send_message (line 55) | def _send_message(self, account): FILE: api/public/public_api/endpoints/device_location.py class DeviceLocationEndpoint (line 27) | class DeviceLocationEndpoint(PublicEndpoint): method __init__ (line 28) | def __init__(self): method get (line 31) | def get(self, device_id): FILE: api/public/public_api/endpoints/device_metrics.py class DeviceMetricsEndpoint (line 25) | class DeviceMetricsEndpoint(PublicEndpoint): method post (line 28) | def post(self, device_id, metric): method _add_core_metric (line 35) | def _add_core_metric(self, metric: str): FILE: api/public/public_api/endpoints/device_oauth.py class OauthServiceEndpoint (line 28) | class OauthServiceEndpoint(PublicEndpoint): method __init__ (line 29) | def __init__(self): method get (line 33) | def get(self, device_id, credentials, oauth_path): FILE: api/public/public_api/endpoints/device_pantacor.py class PantacorSyncRequest (line 40) | class PantacorSyncRequest(Model): class DevicePantacorEndpoint (line 47) | class DevicePantacorEndpoint(PublicEndpoint): method post (line 57) | def post(self): method _validate_request (line 74) | def _validate_request(self): method _get_config_from_pantacor (line 80) | def _get_config_from_pantacor(self): method _add_pantacor_config_to_db (line 92) | def _add_pantacor_config_to_db(self, pantacor_config): FILE: api/public/public_api/endpoints/device_refresh_token.py class DeviceRefreshTokenEndpoint (line 28) | class DeviceRefreshTokenEndpoint(PublicEndpoint): method __init__ (line 32) | def __init__(self): method get (line 36) | def get(self): method _refresh_session_token (line 62) | def _refresh_session_token(self, refresh: str): method _refresh_session_token_device (line 71) | def _refresh_session_token_device(self, device: str): FILE: api/public/public_api/endpoints/device_setting.py class DeviceSettingEndpoint (line 26) | class DeviceSettingEndpoint(PublicEndpoint): method __init__ (line 29) | def __init__(self): method get (line 32) | def get(self, device_id): FILE: api/public/public_api/endpoints/device_skill.py function _normalize_field_value (line 52) | def _normalize_field_value(field): class RequestSkillField (line 73) | class RequestSkillField(Model): class RequestSkillSection (line 86) | class RequestSkillSection(Model): class RequestSkillMetadata (line 93) | class RequestSkillMetadata(Model): class RequestSkillIcon (line 99) | class RequestSkillIcon(Model): class RequestDeviceSkill (line 106) | class RequestDeviceSkill(Model): class SkillSettingsMetaEndpoint (line 116) | class SkillSettingsMetaEndpoint(PublicEndpoint): method __init__ (line 119) | def __init__(self): method device_skill_repo (line 128) | def device_skill_repo(self) -> DeviceSkillRepository: method put (line 135) | def put(self, device_id: str): method _validate_request (line 150) | def _validate_request(self): method _get_skill (line 155) | def _get_skill(self): method _parse_skill_metadata (line 164) | def _parse_skill_metadata(self): method _ensure_settings_definition_exists (line 184) | def _ensure_settings_definition_exists(self): method _check_for_existing_settings_definition (line 191) | def _check_for_existing_settings_definition(self): method _add_settings_definition (line 202) | def _add_settings_definition(self): method _update_device_skill (line 210) | def _update_device_skill(self, device_id): method _get_device_skill (line 229) | def _get_device_skill(self, device_id): method _reconcile_skill_settings (line 244) | def _reconcile_skill_settings(self, settings_values): method _initialize_skill_settings (line 258) | def _initialize_skill_settings(self, device_id): FILE: api/public/public_api/endpoints/device_skill_manifest.py class SkillManifestReconciler (line 39) | class SkillManifestReconciler(object): method __init__ (line 40) | def __init__(self, db, device_manifest, db_manifest): method reconcile (line 49) | def reconcile(self): method _update_skills (line 55) | def _update_skills(self): method _remove_skills (line 65) | def _remove_skills(self): method _add_skills (line 75) | def _add_skills(self): class RequestManifestSkill (line 86) | class RequestManifestSkill(Model): class SkillManifestRequest (line 98) | class SkillManifestRequest(Model): class DeviceSkillManifestEndpoint (line 107) | class DeviceSkillManifestEndpoint(PublicEndpoint): method __init__ (line 110) | def __init__(self): method device_skill_repo (line 114) | def device_skill_repo(self): method put (line 120) | def put(self, device_id): method _validate_put_request (line 127) | def _validate_put_request(self): method _update_skill_manifest (line 131) | def _update_skill_manifest(self, device_id): method _convert_manifest_timestamps (line 155) | def _convert_manifest_timestamps(manifest_skill): FILE: api/public/public_api/endpoints/device_skill_settings.py function _normalize_field_value (line 51) | def _normalize_field_value(field): class SkillSettingUpdater (line 72) | class SkillSettingUpdater(object): method __init__ (line 83) | def __init__(self, db, device_id, display_data: dict): method device_skill_repo (line 91) | def device_skill_repo(self): method settings_display_repo (line 98) | def settings_display_repo(self): method update (line 104) | def update(self): method _extract_settings_values (line 110) | def _extract_settings_values(self): method _get_skill_id (line 134) | def _get_skill_id(self): method _ensure_settings_display_exists (line 143) | def _ensure_settings_display_exists(self) -> bool: method _upsert_device_skill (line 158) | def _upsert_device_skill(self): method _get_account_skill_settings (line 165) | def _get_account_skill_settings(self): method _update_skill_settings (line 175) | def _update_skill_settings(self, skill_settings): method _merge_settings_values (line 193) | def _merge_settings_values(self, settings_values=None): method _add_skill_to_device (line 210) | def _add_skill_to_device(self): class RequestSkillField (line 222) | class RequestSkillField(Model): class RequestSkillSection (line 233) | class RequestSkillSection(Model): class RequestSkillMetadata (line 238) | class RequestSkillMetadata(Model): class RequestSkillIcon (line 242) | class RequestSkillIcon(Model): class RequestSkill (line 247) | class RequestSkill(Model): method validate_skill_gid (line 257) | def validate_skill_gid(self, data, value): class DeviceSkillSettingsEndpoint (line 265) | class DeviceSkillSettingsEndpoint(PublicEndpoint): method device_skill_repo (line 274) | def device_skill_repo(self): method settings_display_repo (line 281) | def settings_display_repo(self): method skill_repo (line 288) | def skill_repo(self): method skill_setting_repo (line 295) | def skill_setting_repo(self): method get (line 301) | def get(self, device_id): method _build_response_data (line 325) | def _build_response_data(self, device_skills): method _apply_settings_values (line 351) | def _apply_settings_values(settings_definition, settings_values): method put (line 364) | def put(self, device_id): method _validate_put_request (line 372) | def _validate_put_request(self): method _update_skill_settings (line 376) | def _update_skill_settings(self, device_id): method _delete_orphaned_settings_display (line 387) | def _delete_orphaned_settings_display(self, settings_display_id): class DeviceSkillSettingsEndpointV2 (line 395) | class DeviceSkillSettingsEndpointV2(PublicEndpoint): method get (line 403) | def get(self, device_id): method _build_response_data (line 416) | def _build_response_data(self, device_id): method _build_response (line 426) | def _build_response(self, device_id, response_data): FILE: api/public/public_api/endpoints/device_subscription.py class DeviceSubscriptionEndpoint (line 26) | class DeviceSubscriptionEndpoint(PublicEndpoint): method __init__ (line 27) | def __init__(self): method get (line 30) | def get(self, device_id): FILE: api/public/public_api/endpoints/geolocation.py class GeolocationEndpoint (line 13) | class GeolocationEndpoint(PublicEndpoint): method __init__ (line 16) | def __init__(self): method city_repo (line 24) | def city_repo(self): method get (line 31) | def get(self): method _get_geolocation (line 38) | def _get_geolocation(self): method _get_cities (line 59) | def _get_cities(self): method _select_geolocation_from_cities (line 82) | def _select_geolocation_from_cities(self): method _get_city_for_requested_region (line 104) | def _get_city_for_requested_region(self): method _get_city_for_requested_country (line 120) | def _get_city_for_requested_country(self): FILE: api/public/public_api/endpoints/google_stt.py class GoogleSTTEndpoint (line 50) | class GoogleSTTEndpoint(PublicEndpoint): method __init__ (line 53) | def __init__(self): method post (line 62) | def post(self): method _get_account (line 76) | def _get_account(self): method _check_for_open_dataset_agreement (line 81) | def _check_for_open_dataset_agreement(self): method _extract_audio_from_request (line 89) | def _extract_audio_from_request(self) -> AudioData: method _call_google_stt (line 111) | def _call_google_stt(self, audio: AudioData) -> str: method _add_transcription_metric (line 143) | def _add_transcription_metric(self): FILE: api/public/public_api/endpoints/oauth_callback.py class OauthCallbackEndpoint (line 27) | class OauthCallbackEndpoint(PublicEndpoint): method __init__ (line 28) | def __init__(self): method get (line 32) | def get(self): FILE: api/public/public_api/endpoints/open_weather_map.py class OpenWeatherMapEndpoint (line 28) | class OpenWeatherMapEndpoint(PublicEndpoint): method __init__ (line 31) | def __init__(self): method get (line 36) | def get(self, path): method _get_weather (line 41) | def _get_weather(self, path): FILE: api/public/public_api/endpoints/premium_voice.py class PremiumVoiceEndpoint (line 27) | class PremiumVoiceEndpoint(PublicEndpoint): method __init__ (line 28) | def __init__(self): method get (line 31) | def get(self, device_id): method _get_premium_voice_link (line 42) | def _get_premium_voice_link(self, arch): FILE: api/public/public_api/endpoints/stripe_webhook.py class StripeWebHookEndpoint (line 27) | class StripeWebHookEndpoint(PublicEndpoint): method __init__ (line 28) | def __init__(self): method post (line 31) | def post(self): FILE: api/public/public_api/endpoints/wake_word_file.py class UploadRequest (line 49) | class UploadRequest(Model): class WakeWordFileUpload (line 58) | class WakeWordFileUpload(PublicEndpoint): method __init__ (line 70) | def __init__(self): method wake_word_repository (line 75) | def wake_word_repository(self): method wake_word (line 83) | def wake_word(self): method file_location (line 94) | def file_location(self): method post (line 108) | def post(self, device_id): method _validate_post_request (line 127) | def _validate_post_request(self): method _get_account (line 145) | def _get_account(self, device_id: str): method _save_audio_file (line 153) | def _save_audio_file(self, hashed_file_name: str, file_contents: bytes): method _add_wake_word_file (line 159) | def _add_wake_word_file(self, account: Account, hashed_file_name: str): FILE: api/public/public_api/endpoints/wolfram_alpha.py class WolframAlphaEndpoint (line 29) | class WolframAlphaEndpoint(PublicEndpoint): method __init__ (line 38) | def __init__(self): method get (line 43) | def get(self): method _query_wolfram_alpha (line 48) | def _query_wolfram_alpha(self): FILE: api/public/public_api/endpoints/wolfram_alpha_simple.py class WolframAlphaSimpleEndpoint (line 28) | class WolframAlphaSimpleEndpoint(PublicEndpoint): method __init__ (line 35) | def __init__(self): method get (line 40) | def get(self): FILE: api/public/public_api/endpoints/wolfram_alpha_spoken.py class WolframAlphaSpokenEndpoint (line 28) | class WolframAlphaSpokenEndpoint(PublicEndpoint): method __init__ (line 31) | def __init__(self): method get (line 36) | def get(self): FILE: api/public/public_api/endpoints/wolfram_alpha_v2.py class WolframAlphaV2Endpoint (line 28) | class WolframAlphaV2Endpoint(PublicEndpoint): method __init__ (line 34) | def __init__(self): method get (line 39) | def get(self): FILE: api/public/tests/features/environment.py function public_api_client (line 60) | def public_api_client(context): function before_all (line 68) | def before_all(context): function after_all (line 85) | def after_all(context): function _remove_wake_word_files (line 106) | def _remove_wake_word_files(context, wake_word): function before_scenario (line 117) | def before_scenario(context, _): function after_scenario (line 129) | def after_scenario(context, _): function _add_account (line 146) | def _add_account(context): function _add_device (line 153) | def _add_device(context): function _add_skills (line 163) | def _add_skills(context): function _add_device_skills (line 183) | def _add_device_skills(context): function after_tag (line 199) | def after_tag(context, tag): function _delete_new_skill (line 207) | def _delete_new_skill(context): function _delete_stt_tagging_files (line 213) | def _delete_stt_tagging_files(): function _delete_stt_transcription_metrics (line 220) | def _delete_stt_transcription_metrics(context): FILE: api/public/tests/features/steps/common.py function check_device_last_contact (line 32) | def check_device_last_contact(context): function check_request_success (line 42) | def check_request_success(context): function check_request_success (line 49) | def check_request_success(context): function check_for_bad_request (line 54) | def check_for_bad_request(context, error_type): function build_request_header (line 68) | def build_request_header(context): function build_unauthorized_request_header (line 75) | def build_unauthorized_request_header(context): function validate_account_last_activity (line 82) | def validate_account_last_activity(context): function validate_account_activity_metrics (line 90) | def validate_account_activity_metrics(context): FILE: api/public/tests/features/steps/device_email.py function send_email (line 28) | def send_email(context): function send_email_invalid_device (line 45) | def send_email_invalid_device(context): function _define_sendgrid_mock (line 50) | def _define_sendgrid_mock(): function _call_email_endpoint (line 68) | def _call_email_endpoint(context, device_id=None): function validate_response (line 89) | def validate_response(context): FILE: api/public/tests/features/steps/device_location.py function get_device_location (line 30) | def get_device_location(context): function validate_location (line 41) | def validate_location(context): function expire_location_etag (line 74) | def expire_location_etag(context): function get_using_expired_etag (line 84) | def get_using_expired_etag(context): function validate_etag (line 98) | def validate_etag(context): function valid_etag (line 106) | def valid_etag(context): function get_using_valid_etag (line 113) | def get_using_valid_etag(context): function validate_response_valid_etag (line 127) | def validate_response_valid_etag(context): FILE: api/public/tests/features/steps/device_metrics.py function define_authorized_device (line 35) | def define_authorized_device(context, in_or_out): function define_unauthorized_device (line 40) | def define_unauthorized_device(context): function call_metrics_endpoint (line 45) | def call_metrics_endpoint(context): function validate_metric_in_db (line 62) | def validate_metric_in_db(context): FILE: api/public/tests/features/steps/device_pairing.py function add_device (line 36) | def add_device(context): function get_device_pairing_code (line 55) | def get_device_pairing_code(context): function activate_device (line 65) | def activate_device(context): function set_pantacor_not_claimed (line 86) | def set_pantacor_not_claimed(context): function set_pantacor_not_claimed (line 91) | def set_pantacor_not_claimed(context): function activate_pantacor_device (line 96) | def activate_pantacor_device(context): function _mock_get_channel_response (line 119) | def _mock_get_channel_response() -> MagicMock: function _mock_get_device_response (line 135) | def _mock_get_device_response(context) -> MagicMock: function check_cached_pairing_data (line 159) | def check_cached_pairing_data(context): function validate_pairing_code_response (line 175) | def validate_pairing_code_response(context): function validate_activation_response (line 185) | def validate_activation_response(context): function validate_device_update (line 195) | def validate_device_update(context): function validate_pantacor_update (line 205) | def validate_pantacor_update(context): FILE: api/public/tests/features/steps/device_refresh_token.py function refresh_token (line 28) | def refresh_token(context): function validate_refresh_token (line 38) | def validate_refresh_token(context): function refresh_invalid_token (line 55) | def refresh_invalid_token(context): function validate_refresh_invalid_token (line 63) | def validate_refresh_invalid_token(context): FILE: api/public/tests/features/steps/device_skill_manifest.py function _build_manifest_upload (line 32) | def _build_manifest_upload(manifest_skills): function _add_device_specific_skill (line 52) | def _add_device_specific_skill(context): function upload_unchanged_skill_manifest (line 67) | def upload_unchanged_skill_manifest(context): function upload_changed_skill_manifest (line 74) | def upload_changed_skill_manifest(context): function upload_skill_manifest_with_deleted_skill (line 83) | def upload_skill_manifest_with_deleted_skill(context): function upload_skill_manifest_no_device_specific (line 90) | def upload_skill_manifest_no_device_specific(context): function upload_skill_manifest_with_new_skill (line 97) | def upload_skill_manifest_with_new_skill(context): function upload_malformed_skill_manifest (line 116) | def upload_malformed_skill_manifest(context): function _upload_skill_manifest (line 123) | def _upload_skill_manifest(context, skill_manifest): function get_unchanged_skill_manifest (line 134) | def get_unchanged_skill_manifest(context): function get_updated_skill_manifest (line 144) | def get_updated_skill_manifest(context): function get_empty_skill_manifest (line 156) | def get_empty_skill_manifest(context): function get_skill_manifest_no_device_specific (line 164) | def get_skill_manifest_no_device_specific(context): function ensure_device_specific_skill_removed (line 177) | def ensure_device_specific_skill_removed(context): function get_skill_manifest_new_skill (line 185) | def get_skill_manifest_new_skill(context): function get_new_skill (line 201) | def get_new_skill(context): FILE: api/public/tests/features/steps/device_skill_settings.py function change_skill_setting_value (line 33) | def change_skill_setting_value(context): function delete_field_from_settings (line 41) | def delete_field_from_settings(context): function set_skill_setting_etag (line 49) | def set_skill_setting_etag(context): function expire_skill_setting_etag (line 56) | def expire_skill_setting_etag(context): function add_skill_not_assigned_to_device (line 64) | def add_skill_not_assigned_to_device(context): function get_device_skill_settings (line 77) | def get_device_skill_settings(context): function update_skill_settings (line 88) | def update_skill_settings(context, skill): function delete_skill (line 99) | def delete_skill(context): function validate_response (line 110) | def validate_response(context): function check_for_expired_etag (line 137) | def check_for_expired_etag(context): function _get_device_skill_settings (line 147) | def _get_device_skill_settings(context): function validate_updated_skill_setting_value (line 160) | def validate_updated_skill_setting_value(context): function validate_updated_skill_setting_value (line 170) | def validate_updated_skill_setting_value(context): function get_skills_etag (line 178) | def get_skills_etag(context): function validate_skill_setting_field_removed (line 188) | def validate_skill_setting_field_removed(context): FILE: api/public/tests/features/steps/get_device.py function get_device (line 35) | def get_device(context): function validate_response (line 46) | def validate_response(context): function get_invalid_device (line 62) | def get_invalid_device(context): function get_not_allowed_device (line 69) | def get_not_allowed_device(context): function validate_invalid_response (line 78) | def validate_invalid_response(context): function update_device (line 84) | def update_device(context): function validate_update (line 99) | def validate_update(context): function get_device_etag (line 113) | def get_device_etag(context): function get_device_using_etag (line 120) | def get_device_using_etag(context): function validate_etag (line 135) | def validate_etag(context): function expire_etag (line 141) | def expire_etag(context): function fetch_device_expired_etag (line 149) | def fetch_device_expired_etag(context): function validate_status_code (line 164) | def validate_status_code(context): function validate_new_etag (line 170) | def validate_new_etag(context): FILE: api/public/tests/features/steps/get_device_settings.py function get_device_settings (line 31) | def get_device_settings(context): function validate_response_setting (line 42) | def validate_response_setting(context): function get_device_settings (line 60) | def get_device_settings(context): function validate_response (line 69) | def validate_response(context): function get_device_setting_etag (line 75) | def get_device_setting_etag(context): function get_device_settings_using_etag (line 82) | def get_device_settings_using_etag(context): function validate_etag_response (line 96) | def validate_etag_response(context): function expire_etag_device_level (line 102) | def expire_etag_device_level(context): function expire_etag_account_level (line 110) | def expire_etag_account_level(context): function get_device_settings_using_etag (line 119) | def get_device_settings_using_etag(context): function validate_new_etag (line 135) | def validate_new_etag(context): FILE: api/public/tests/features/steps/get_device_subscription.py function get_device_subscription (line 33) | def get_device_subscription(context): function validate_response (line 44) | def validate_response(context): function get_device_subscription (line 52) | def get_device_subscription(context): function validate_response_monthly (line 72) | def validate_response_monthly(context): function get_subscription_nonexistent_device (line 80) | def get_subscription_nonexistent_device(context): function validate_nonexistent_device (line 89) | def validate_nonexistent_device(context): FILE: api/public/tests/features/steps/transcribe_audio.py function call_google_stt_endpoint (line 32) | def call_google_stt_endpoint(context, utterance): function call_audio_transcription_endpoint (line 44) | def call_audio_transcription_endpoint(context, utterance): function _build_audio_data (line 55) | def _build_audio_data() -> BytesIO: function _build_request_header (line 64) | def _build_request_header(context): function validate_google_response (line 73) | def validate_google_response(context): function validate_transcription_response (line 81) | def validate_transcription_response(context): function validate_transcription_metrics (line 87) | def validate_transcription_metrics(context): FILE: api/public/tests/features/steps/wake_word_file.py function upload_known_wake_word_file (line 38) | def upload_known_wake_word_file(context): function add_collision_file (line 51) | def add_collision_file(context): function upload_unknown_wake_word_file (line 58) | def upload_unknown_wake_word_file(context): function _build_expected_wake_word_file (line 71) | def _build_expected_wake_word_file(context, wake_word): function _call_upload_endpoint (line 85) | def _call_upload_endpoint(context, metadata): function check_file_save (line 105) | def check_file_save(context): function check_wake_word_file_table (line 120) | def check_wake_word_file_table(context): FILE: api/public/tests/features/steps/wolfram_alpha.py function send_question (line 27) | def send_question(context): function send_question (line 37) | def send_question(context): function send_question (line 47) | def send_question(context): function validate_response (line 57) | def validate_response(context): FILE: api/sso/sso_api/api.py function add_cors_headers (line 113) | def add_cors_headers(response): FILE: api/sso/sso_api/endpoints/authenticate_internal.py class AuthenticateInternalEndpoint (line 35) | class AuthenticateInternalEndpoint(SeleneEndpoint): method __init__ (line 38) | def __init__(self): method get (line 42) | def get(self): method _authenticate_credentials (line 50) | def _authenticate_credentials(self): FILE: api/sso/sso_api/endpoints/github_token.py class GithubTokenEndpoint (line 26) | class GithubTokenEndpoint(SeleneEndpoint): method get (line 27) | def get(self): FILE: api/sso/sso_api/endpoints/logout.py class LogoutEndpoint (line 30) | class LogoutEndpoint(SeleneEndpoint): method get (line 33) | def get(self): method _logout (line 39) | def _logout(self): FILE: api/sso/sso_api/endpoints/password_change.py class PasswordChangeEndpoint (line 25) | class PasswordChangeEndpoint(CommonPasswordChangeEndpoint): method account_id (line 29) | def account_id(self): method _authenticate (line 33) | def _authenticate(self): FILE: api/sso/sso_api/endpoints/password_reset.py class PasswordResetEndpoint (line 31) | class PasswordResetEndpoint(SeleneEndpoint): method post (line 34) | def post(self): method _get_account_from_email (line 45) | def _get_account_from_email(self): method _generate_reset_token (line 52) | def _generate_reset_token(self) -> str: method _send_reset_email (line 59) | def _send_reset_email(self, reset_token: str): method _send_account_not_found_email (line 75) | def _send_account_not_found_email(self): FILE: api/sso/sso_api/endpoints/validate_federated.py class ValidateFederatedRequest (line 47) | class ValidateFederatedRequest(Model): class ValidateFederatedEndpoint (line 54) | class ValidateFederatedEndpoint(SeleneEndpoint): method __init__ (line 57) | def __init__(self): method post (line 61) | def post(self): method _validate_request (line 71) | def _validate_request(self): method _get_email_address (line 75) | def _get_email_address(self): method _get_account_by_email (line 83) | def _get_account_by_email(self): FILE: api/sso/sso_api/endpoints/validate_token.py class ValidateTokenEndpoint (line 25) | class ValidateTokenEndpoint(SeleneEndpoint): method post (line 26) | def post(self): method _validate_token (line 30) | def _validate_token(self): FILE: api/sso/tests/features/environment.py function sso_client (line 33) | def sso_client(context): function before_all (line 43) | def before_all(context): function before_scenario (line 51) | def before_scenario(context, _): function after_scenario (line 61) | def after_scenario(context, _): function after_all (line 72) | def after_all(context): FILE: api/sso/tests/features/steps/add_account.py function build_new_account_request (line 32) | def build_new_account_request(context): function remove_required_field (line 47) | def remove_required_field(context, required_field): function reject_agreement (line 60) | def reject_agreement(context, agreement): function call_add_account_endpoint (line 69) | def call_add_account_endpoint(context): function call_validate_email_endpoint (line 81) | def call_validate_email_endpoint(context): function check_db_for_account (line 95) | def check_db_for_account(context): function check_db_for_account_metrics (line 112) | def check_db_for_account_metrics(context): function check_for_duplicate_account_error (line 128) | def check_for_duplicate_account_error(context): FILE: api/sso/tests/features/steps/agreements.py function call_agreement_endpoint (line 29) | def call_agreement_endpoint(context, agreement): function validate_response (line 35) | def validate_response(context, agreement): FILE: api/sso/tests/features/steps/common.py function check_request_success (line 27) | def check_request_success(context): function check_for_bad_request (line 33) | def check_for_bad_request(context, error_type): function check_error_message_exists (line 39) | def check_error_message_exists(context): function check_error_message (line 45) | def check_error_message(context, error_msg): FILE: api/sso/tests/features/steps/login.py function save_credentials (line 34) | def save_credentials(context, email, password): function save_email (line 41) | def save_email(context, email, platform): function call_validate_federated_endpoint (line 48) | def call_validate_federated_endpoint(context): function call_internal_login_endpoint (line 62) | def call_internal_login_endpoint(context): function check_token_cookies (line 72) | def check_token_cookies(context): FILE: api/sso/tests/features/steps/logout.py function use_account_with_valid_access_token (line 34) | def use_account_with_valid_access_token(context): function call_logout_endpoint (line 44) | def call_logout_endpoint(context): function check_response_cookies (line 52) | def check_response_cookies(context): FILE: api/sso/tests/features/steps/password_change.py function setup_user (line 26) | def setup_user(context): function call_password_change_endpoint (line 37) | def call_password_change_endpoint(context): FILE: batch/job_scheduler/jobs.py class JobRunner (line 38) | class JobRunner(object): method __init__ (line 41) | def __init__(self, script_name: str): method run_job (line 46) | def run_job(self): method _add_date_to_args (line 52) | def _add_date_to_args(self): method _build_command (line 63) | def _build_command(self): method _execute_command (line 74) | def _execute_command(self, command): function test_scheduler (line 92) | def test_scheduler(): function load_skills (line 100) | def load_skills(version): function parse_core_metrics (line 108) | def parse_core_metrics(): function partition_api_metrics (line 118) | def partition_api_metrics(): function update_device_last_contact (line 129) | def update_device_last_contact(): FILE: batch/script/daily_report.py class DailyReport (line 42) | class DailyReport(SeleneScript): method __init__ (line 43) | def __init__(self): method _run (line 53) | def _run(self): method _build_report (line 62) | def _build_report(self, date: datetime = None): FILE: batch/script/delete_wake_word_files.py class WakeWordFileRemover (line 33) | class WakeWordFileRemover(SeleneScript): method __init__ (line 38) | def __init__(self): method file_repository (line 42) | def file_repository(self): method _run (line 49) | def _run(self): method _delete_files_for_account (line 57) | def _delete_files_for_account(self, account_id, files_to_delete): method _remove_from_file_system (line 71) | def _remove_from_file_system(self, file_to_delete): method _remove_from_precise_file_system (line 80) | def _remove_from_precise_file_system(self, file_path): method _remove_from_local_file_system (line 91) | def _remove_from_local_file_system(self, file_path): method _check_for_empty_directory (line 104) | def _check_for_empty_directory(self, file_location): method _delete_empty_directory (line 124) | def _delete_empty_directory(self, file_location): method _run_on_precise_server (line 142) | def _run_on_precise_server(self, command): FILE: batch/script/designate_wake_word_files.py class WakeWordFileDesignator (line 33) | class WakeWordFileDesignator(SeleneScript): method __init__ (line 38) | def __init__(self): method tag_names (line 47) | def tag_names(self): method _run (line 61) | def _run(self): method _get_designation_candidates (line 69) | def _get_designation_candidates(self) -> dict: method _assign_designations (line 77) | def _assign_designations(self, file_tags: List[FileTag]): method _init_tag (line 90) | def _init_tag(self, file_tag: FileTag): method _increment_value_counts (line 99) | def _increment_value_counts(self, tag_value_id: str): method _convert_tags_to_designations (line 108) | def _convert_tags_to_designations(self): method _apply_designation_criteria (line 115) | def _apply_designation_criteria(self) -> str: method _add_designation (line 129) | def _add_designation(self, designation_value): method _increment_designation_stats (line 141) | def _increment_designation_stats(self, designation_value): method _log_designation_stats (line 154) | def _log_designation_stats(self, wake_word): FILE: batch/script/load_skill_display_data.py class SkillDisplayUpdater (line 42) | class SkillDisplayUpdater(SeleneScript): method __init__ (line 43) | def __init__(self): method _define_args (line 47) | def _define_args(self): method _run (line 56) | def _run(self): method _get_skill_display_data (line 64) | def _get_skill_display_data(self): method _update_skill_display_table (line 75) | def _update_skill_display_table(self): FILE: batch/script/move_wake_word_files.py class WakeWordSampleMover (line 33) | class WakeWordSampleMover(SeleneScript): method __init__ (line 39) | def __init__(self): method _run (line 43) | def _run(self): method file_repository (line 48) | def file_repository(self): method _get_wake_word_file_info (line 54) | def _get_wake_word_file_info(self): method _move_files (line 60) | def _move_files(self, wake_word_file_info): method _ensure_remote_directory_exists (line 70) | def _ensure_remote_directory_exists(self, file_info) -> Path: method _ensure_directory_exists_on_server (line 79) | def _ensure_directory_exists_on_server(self, directory): method _ensure_directory_exists_on_db (line 86) | def _ensure_directory_exists_on_db(self, new_directory): method _copy_file (line 94) | def _copy_file(self, file_info, destination_dir): FILE: batch/script/parse_core_metrics.py class CoreMetricsParser (line 38) | class CoreMetricsParser(SeleneScript): method __init__ (line 39) | def __init__(self): method _run (line 47) | def _run(self): method _start_new_interaction (line 57) | def _start_new_interaction(self, metric): method _add_metric_to_interaction (line 67) | def _add_metric_to_interaction(self, metric_value): method _add_interaction_to_db (line 99) | def _add_interaction_to_db(self): FILE: batch/script/partition_api_metrics.py class PartitionApiMetrics (line 31) | class PartitionApiMetrics(SeleneScript): method __init__ (line 32) | def __init__(self): method _run (line 36) | def _run(self): FILE: batch/script/test_scheduler.py class TestScheduler (line 31) | class TestScheduler(SeleneScript): method __init__ (line 32) | def __init__(self): method _define_args (line 35) | def _define_args(self): method _run (line 55) | def _run(self): FILE: batch/script/update_device_last_contact.py class UpdateDeviceLastContact (line 36) | class UpdateDeviceLastContact(SeleneScript): method __init__ (line 37) | def __init__(self): method _run (line 41) | def _run(self): method _get_ts_from_cache (line 52) | def _get_ts_from_cache(self, device_id): FILE: db/mycroft/account_schema/tables/account.sql type account (line 1) | CREATE TABLE account.account ( FILE: db/mycroft/account_schema/tables/account_agreement.sql type account (line 1) | CREATE TABLE account.account_agreement ( FILE: db/mycroft/account_schema/tables/account_membership.sql type account (line 1) | CREATE TABLE account.account_membership ( FILE: db/mycroft/account_schema/tables/agreement.sql type account (line 1) | CREATE TABLE account.agreement ( FILE: db/mycroft/account_schema/tables/membership.sql type account (line 1) | CREATE TABLE account.membership ( FILE: db/mycroft/device_schema/tables/account_defaults.sql type device (line 2) | CREATE TABLE device.account_defaults ( FILE: db/mycroft/device_schema/tables/account_preferences.sql type device (line 2) | CREATE TABLE device.account_preferences ( FILE: db/mycroft/device_schema/tables/category.sql type device (line 1) | CREATE TABLE device.category ( FILE: db/mycroft/device_schema/tables/device.sql type device (line 1) | CREATE TABLE device.device ( FILE: db/mycroft/device_schema/tables/device_skill.sql type device (line 1) | CREATE TABLE device.device_skill ( FILE: db/mycroft/device_schema/tables/geography.sql type device (line 1) | CREATE TABLE device.geography ( FILE: db/mycroft/device_schema/tables/pantacor_config.sql type device (line 1) | CREATE TABLE device.pantacor_config ( FILE: db/mycroft/device_schema/tables/skill_setting.sql type device (line 1) | CREATE TABLE device.skill_setting ( FILE: db/mycroft/device_schema/tables/text_to_speech.sql type device (line 1) | CREATE TABLE device.text_to_speech ( FILE: db/mycroft/device_schema/tables/wake_word.sql type device (line 1) | CREATE TABLE device.wake_word ( FILE: db/mycroft/device_schema/tables/wake_word_settings.sql type device (line 2) | CREATE TABLE device.wake_word_settings ( FILE: db/mycroft/geography_schema/tables/city.sql type geography (line 1) | CREATE TABLE geography.city ( FILE: db/mycroft/geography_schema/tables/country.sql type geography (line 1) | CREATE TABLE geography.country ( FILE: db/mycroft/geography_schema/tables/region.sql type geography (line 1) | CREATE TABLE geography.region ( FILE: db/mycroft/geography_schema/tables/timezone.sql type geography (line 1) | CREATE TABLE geography.timezone ( FILE: db/mycroft/metric_schema/tables/account_activity.sql type metric (line 1) | CREATE TABLE metric.account_activity ( type account_activity_dt_idx (line 19) | CREATE INDEX IF NOT EXISTS FILE: db/mycroft/metric_schema/tables/api.sql type metric (line 1) | CREATE TABLE metric.api ( type api_access_ts_idx (line 15) | CREATE INDEX IF NOT EXISTS FILE: db/mycroft/metric_schema/tables/api_history.sql type metric (line 1) | CREATE TABLE metric.api_history ( FILE: db/mycroft/metric_schema/tables/core.sql type metric (line 1) | CREATE TABLE metric.core ( FILE: db/mycroft/metric_schema/tables/core_interaction.sql type metric (line 1) | CREATE TABLE metric.core_interaction ( FILE: db/mycroft/metric_schema/tables/job.sql type metric (line 1) | CREATE TABLE metric.job ( FILE: db/mycroft/metric_schema/tables/stt_engine.sql type metric (line 1) | CREATE TABLE metric.stt_engine ( type stt_transcription_engine_activity_idx (line 13) | CREATE UNIQUE INDEX IF NOT EXISTS FILE: db/mycroft/metric_schema/tables/stt_transcription.sql type metric (line 5) | CREATE TABLE metric.stt_transcription ( type stt_transcription_account_activity_idx (line 15) | CREATE UNIQUE INDEX IF NOT EXISTS FILE: db/mycroft/skill_schema/tables/display.sql type skill (line 1) | CREATE TABLE skill.display ( FILE: db/mycroft/skill_schema/tables/oauth_credential.sql type skill (line 1) | CREATE TABLE skill.oauth_credential ( FILE: db/mycroft/skill_schema/tables/oauth_token.sql type skill (line 1) | CREATE TABLE skill.oauth_token ( FILE: db/mycroft/skill_schema/tables/settings_display.sql type skill (line 1) | CREATE TABLE skill.settings_display ( FILE: db/mycroft/skill_schema/tables/skill.sql type skill (line 1) | CREATE TABLE skill.skill ( FILE: db/mycroft/tagging_schema/tables/file_location.sql type tagging (line 2) | CREATE TABLE tagging.file_location ( FILE: db/mycroft/tagging_schema/tables/session.sql type tagging (line 2) | CREATE TABLE tagging.session ( FILE: db/mycroft/tagging_schema/tables/tag.sql type tagging (line 2) | CREATE TABLE tagging.tag ( FILE: db/mycroft/tagging_schema/tables/tag_value.sql type tagging (line 2) | CREATE TABLE tagging.tag_value ( FILE: db/mycroft/tagging_schema/tables/tagger.sql type tagging (line 2) | CREATE TABLE tagging.tagger ( FILE: db/mycroft/tagging_schema/tables/wake_word_file.sql type tagging (line 2) | CREATE TABLE tagging.wake_word_file ( FILE: db/mycroft/tagging_schema/tables/wake_word_file_designation.sql type tagging (line 2) | CREATE TABLE tagging.wake_word_file_designation ( FILE: db/mycroft/tagging_schema/tables/wake_word_file_tag.sql type tagging (line 2) | CREATE TABLE tagging.wake_word_file_tag ( FILE: db/mycroft/versions/2020.9.1.sql type wake_word (line 10) | CREATE TABLE wake_word.wake_word ( type wake_word (line 17) | CREATE TABLE wake_word.pocketsphinx_settings ( type tagging (line 145) | CREATE TABLE tagging.file_location ( type tagging (line 152) | CREATE TABLE tagging.wake_word_file ( type tagging (line 163) | CREATE TABLE tagging.tagger ( type tagging (line 170) | CREATE TABLE tagging.session ( type tagging (line 179) | CREATE TABLE tagging.tag ( type tagging (line 186) | CREATE TABLE tagging.tag_value ( type tagging (line 194) | CREATE TABLE tagging.wake_word_file_tag ( type tagging (line 203) | CREATE TABLE tagging.wake_word_file_designation ( FILE: db/mycroft/wake_word_schema/tables/pocketsphinx_settings.sql type wake_word (line 2) | CREATE TABLE wake_word.pocketsphinx_settings ( FILE: db/mycroft/wake_word_schema/tables/wake_word.sql type wake_word (line 2) | CREATE TABLE wake_word.wake_word ( FILE: db/scripts/bootstrap_mycroft_db.py function get_sql_from_file (line 89) | def get_sql_from_file(file_path: str) -> str: class PostgresDB (line 96) | class PostgresDB(object): method __init__ (line 97) | def __init__(self, db_name, user=None): method close_db (line 122) | def close_db(self): method execute_sql (line 125) | def execute_sql(self, sql: str, args=None): function destroy_existing (line 131) | def destroy_existing(db): function create_anew (line 137) | def create_anew(db): function _init_db (line 143) | def _init_db(): function _setup_template_db (line 150) | def _setup_template_db(db): function _build_schema_tables (line 162) | def _build_schema_tables(db, schema, tables): function _grant_access (line 169) | def _grant_access(db): function _build_template_db (line 175) | def _build_template_db(): function _create_mycroft_db_from_template (line 189) | def _create_mycroft_db_from_template(): function _apply_insert_file (line 196) | def _apply_insert_file(db, schema_dir, file_name): function _populate_agreement_table (line 204) | def _populate_agreement_table(db): function _populate_country_table (line 244) | def _populate_country_table(db): function _populate_region_table (line 264) | def _populate_region_table(db): function _populate_timezone_table (line 289) | def _populate_timezone_table(db): function _populate_city_table (line 316) | def _populate_city_table(db, continuous_integration): function _populate_db (line 368) | def _populate_db(continuous_integration): function _define_args (line 384) | def _define_args(): FILE: db/scripts/neo4j-postgres.py function load_csv (line 64) | def load_csv(): function format_date (line 253) | def format_date(value): function format_timestamp (line 259) | def format_timestamp(value): function get_subscription_uuid (line 273) | def get_subscription_uuid(subs): function get_tts_uuid (line 289) | def get_tts_uuid(tts): function fill_account_table (line 302) | def fill_account_table(): function fill_account_agreement_table (line 318) | def fill_account_agreement_table(): function fill_default_wake_word (line 338) | def fill_default_wake_word(): function fill_wake_word_table (line 375) | def fill_wake_word_table(): function fill_account_preferences_table (line 409) | def fill_account_preferences_table(): function fill_subscription_table (line 467) | def fill_subscription_table(): function fill_wake_word_settings_table (line 506) | def fill_wake_word_settings_table(): function change_device_name (line 552) | def change_device_name(): function fill_device_table (line 569) | def fill_device_table(): function fill_skills_table (line 717) | def fill_skills_table(): function analyze_locations (line 774) | def analyze_locations(): function analyze_location_2 (line 832) | def analyze_location_2(): FILE: db/scripts/remove_duplicate_cities.py function get_cursor (line 34) | def get_cursor(): function get_duplicate_cities (line 50) | def get_duplicate_cities(cursor): function get_device_geographies (line 62) | def get_device_geographies(cursor, city): function get_account_defaults (line 80) | def get_account_defaults(cursor, city): function check_device_geography_for_dup_cities (line 95) | def check_device_geography_for_dup_cities(cursor, duplicate_cities): function check_account_defaults_for_dup_cities (line 113) | def check_account_defaults_for_dup_cities(cursor, duplicate_cities): function delete_duplicates (line 131) | def delete_duplicates(cursor, city, used_cities): function main (line 157) | def main(): FILE: shared/selene/api/base_config.py class APIConfigError (line 45) | class APIConfigError(Exception): class BaseConfig (line 49) | class BaseConfig(object): class DevelopmentConfig (line 67) | class DevelopmentConfig(BaseConfig): class TestConfig (line 72) | class TestConfig(BaseConfig): class ProdConfig (line 76) | class ProdConfig(BaseConfig): function get_base_config (line 80) | def get_base_config(): FILE: shared/selene/api/base_endpoint.py class APIError (line 37) | class APIError(Exception): class SeleneEndpoint (line 41) | class SeleneEndpoint(MethodView): method __init__ (line 50) | def __init__(self): method db (line 60) | def db(self): method _init_access_token (line 69) | def _init_access_token(self): method _init_refresh_token (line 73) | def _init_refresh_token(self): method _authenticate (line 76) | def _authenticate(self): method _validate_auth_tokens (line 92) | def _validate_auth_tokens(self): method _get_auth_tokens (line 109) | def _get_auth_tokens(self): method _decode_access_token (line 116) | def _decode_access_token(self): method _decode_refresh_token (line 123) | def _decode_refresh_token(self): method _get_account (line 133) | def _get_account(self, account_id): method _validate_account (line 138) | def _validate_account(self, account_id: str): method _refresh_auth_tokens (line 148) | def _refresh_auth_tokens(self): method _generate_tokens (line 153) | def _generate_tokens(self): method _set_token_cookies (line 160) | def _set_token_cookies(self, expire=False): FILE: shared/selene/api/blueprint.py function handle_data_error (line 38) | def handle_data_error(error): function handle_data_error (line 43) | def handle_data_error(error): function handle_not_modified (line 48) | def handle_not_modified(_): function setup_request (line 53) | def setup_request(): function teardown_request (line 58) | def teardown_request(response): function add_api_metric (line 65) | def add_api_metric(http_status): function update_device_last_contact (line 108) | def update_device_last_contact(): FILE: shared/selene/api/endpoints/account.py function agreement_accepted (line 67) | def agreement_accepted(value): class Login (line 73) | class Login(Model): method validate_email (line 81) | def validate_email(self, data, value): method validate_password (line 89) | def validate_password(self, data, value): class UpdateMembershipRequest (line 96) | class UpdateMembershipRequest(Model): method validate_membership_type (line 104) | def validate_membership_type(self, data, value): method validate_payment_method (line 109) | def validate_payment_method(self, data, value): method validate_payment_token (line 114) | def validate_payment_token(self, data, value): class AddAccountRequest (line 120) | class AddAccountRequest(Model): class AccountEndpoint (line 128) | class AccountEndpoint(SeleneEndpoint): method __init__ (line 134) | def __init__(self): method account_repository (line 140) | def account_repository(self): method account_activity_repository (line 148) | def account_activity_repository(self): method get (line 155) | def get(self): method _build_response_data (line 163) | def _build_response_data(self): method _format_agreement_date (line 179) | def _format_agreement_date(agreement): method _format_membership_duration (line 187) | def _format_membership_duration(response_data): method post (line 205) | def post(self): method _validate_post_request (line 213) | def _validate_post_request(self): method _build_login_schematic (line 226) | def _build_login_schematic(self) -> Login: method _determine_login_method (line 248) | def _determine_login_method(self): method _add_account (line 264) | def _add_account(self, email_address, password): method patch (line 281) | def patch(self): method _expire_device_setting_cache (line 295) | def _expire_device_setting_cache(self): method _update_account (line 300) | def _update_account(self): method _validate_membership_update_request (line 317) | def _validate_membership_update_request(value): method _update_membership (line 328) | def _update_membership(self, membership_change): method _get_active_membership (line 355) | def _get_active_membership(self): method _add_membership (line 364) | def _add_membership(self, membership_change, active_membership): method _get_stripe_plan (line 385) | def _get_stripe_plan(self, plan): method _cancel_membership (line 392) | def _cancel_membership(self, active_membership): method _update_username (line 399) | def _update_username(self, username): method _update_open_dataset_agreement (line 403) | def _update_open_dataset_agreement(self, opt_in: bool): method delete (line 413) | def delete(self): method _change_wake_word_file_status (line 424) | def _change_wake_word_file_status(self): FILE: shared/selene/api/endpoints/agreements.py class AgreementsEndpoint (line 29) | class AgreementsEndpoint(SeleneEndpoint): method get (line 36) | def get(self, agreement_type): FILE: shared/selene/api/endpoints/password_change.py class PasswordChangeEndpoint (line 28) | class PasswordChangeEndpoint(SeleneEndpoint): method account_id (line 32) | def account_id(self): method put (line 36) | def put(self): method _send_email (line 48) | def _send_email(self): FILE: shared/selene/api/endpoints/validate_email.py class ValidateEmailEndpoint (line 35) | class ValidateEmailEndpoint(SeleneEndpoint): method get (line 38) | def get(self): method _get_email_address (line 52) | def _get_email_address(self): method _validate_email_address (line 65) | def _validate_email_address(self) -> str: FILE: shared/selene/api/etag.py function device_etag_key (line 30) | def device_etag_key(device_id: str): function device_setting_etag_key (line 34) | def device_setting_etag_key(device_id: str): function device_location_etag_key (line 38) | def device_location_etag_key(device_id: str): class ETagManager (line 42) | class ETagManager(object): method __init__ (line 47) | def __init__(self, cache: SeleneCache, config: dict): method get (line 51) | def get(self, key: str) -> str: method expire (line 61) | def expire(self, key): method expire_device_etag_by_device_id (line 67) | def expire_device_etag_by_device_id(self, device_id: str): method expire_device_setting_etag_by_device_id (line 72) | def expire_device_setting_etag_by_device_id(self, device_id: str): method expire_device_setting_etag_by_account_id (line 77) | def expire_device_setting_etag_by_account_id(self, account_id: str): method expire_device_location_etag_by_device_id (line 85) | def expire_device_location_etag_by_device_id(self, device_id: str): method expire_device_location_etag_by_account_id (line 90) | def expire_device_location_etag_by_account_id(self, account_id: str): method expire_skill_etag_by_device_id (line 98) | def expire_skill_etag_by_device_id(self, device_id): method expire_skill_etag_by_account_id (line 105) | def expire_skill_etag_by_account_id(self, account_id): FILE: shared/selene/api/pantacor.py class PantacorError (line 30) | class PantacorError(Exception): function _get_release_channels (line 34) | def _get_release_channels(): function get_pantacor_device (line 44) | def get_pantacor_device(pantacor_device_id: str) -> PantacorConfig: function get_pantacor_pending_deployment (line 79) | def get_pantacor_pending_deployment(device_id: str): function apply_pantacor_update (line 101) | def apply_pantacor_update(deployment_id: str): function _change_pantacor_update_policy (line 110) | def _change_pantacor_update_policy(device_id: str, auto_update: bool): function _change_pantacor_release_channel (line 121) | def _change_pantacor_release_channel(device_id: str, release_channel: str): function _change_pantacor_ssh_key (line 143) | def _change_pantacor_ssh_key(device_id: str, ssh_key: str): function _call_pantacor_api (line 155) | def _call_pantacor_api(method: str, endpoint: str, **kwargs): function update_pantacor_config (line 187) | def update_pantacor_config(old_config: dict, new_config: dict): FILE: shared/selene/api/public_endpoint.py function track_account_activity (line 39) | def track_account_activity(db, device_id: str): function check_oauth_token (line 48) | def check_oauth_token(): function generate_device_login (line 76) | def generate_device_login(device_id: str, cache: SeleneCache) -> dict: function delete_device_login (line 99) | def delete_device_login(device_id: str, cache: SeleneCache): class PublicEndpoint (line 110) | class PublicEndpoint(MethodView): method __init__ (line 113) | def __init__(self): method db (line 124) | def db(self): method _authenticate (line 132) | def _authenticate(self, device_id: str = None): method _get_oauth_token_from_request (line 138) | def _get_oauth_token_from_request(self): method _get_device_id_from_token (line 147) | def _get_device_id_from_token(self, token): method _validate_request_device_id (line 156) | def _validate_request_device_id(self, request_device_id): method _add_etag (line 163) | def _add_etag(self, key): method _validate_etag (line 173) | def _validate_etag(self, key): FILE: shared/selene/api/response.py function snake_to_camel (line 28) | def snake_to_camel(name): function coerce_response (line 33) | def coerce_response(response_data): class SeleneResponse (line 60) | class SeleneResponse(Response): method force_type (line 62) | def force_type(cls, rv, environ=None): FILE: shared/selene/batch/base.py class SeleneScript (line 36) | class SeleneScript(object): method __init__ (line 40) | def __init__(self, job_file_path): method job_name (line 51) | def job_name(self): method db (line 59) | def db(self): method run (line 74) | def run(self): method _start_job (line 86) | def _start_job(self): method _define_args (line 93) | def _define_args(self): method _run (line 102) | def _run(self): method _finish_job (line 106) | def _finish_job(self): method _insert_metrics (line 115) | def _insert_metrics(self): FILE: shared/selene/data/account/entity/account.py class AccountAgreement (line 27) | class AccountAgreement: class AccountMembership (line 36) | class AccountMembership: class Account (line 49) | class Account: FILE: shared/selene/data/account/entity/agreement.py class Agreement (line 29) | class Agreement(object): FILE: shared/selene/data/account/entity/membership.py class Membership (line 25) | class Membership(object): FILE: shared/selene/data/account/entity/skill.py class AccountSkill (line 25) | class AccountSkill(object): FILE: shared/selene/data/account/repository/account.py function _encrypt_password (line 35) | def _encrypt_password(password: str) -> str: class AccountRepository (line 48) | class AccountRepository(RepositoryBase): method __init__ (line 51) | def __init__(self, db): method add (line 56) | def add(self, account: Account, password: str) -> str: method _add_account (line 70) | def _add_account(self, account: Account, password: str): method add_agreement (line 93) | def add_agreement(self, account_id: str, agreement: AccountAgreement): method remove (line 105) | def remove(self, account: Account): method get_account_by_id (line 121) | def get_account_by_id(self, account_id: str) -> Optional[Account]: method get_account_by_email (line 136) | def get_account_by_email(self, email_address: str) -> Optional[Account]: method get_account_from_credentials (line 154) | def get_account_from_credentials( method get_account_by_device_id (line 176) | def get_account_by_device_id(self, device_id: str) -> Optional[Account]: method _get_account (line 186) | def _get_account(self, db_request: DatabaseRequest) -> Optional[Account]: method update_password (line 222) | def update_password(self, account_id: str, password: str): method update_email_address (line 235) | def update_email_address(self, account_id: str, email_address: str): method update_username (line 247) | def update_username(self, account_id: str, username: str): method expire_open_dataset_agreement (line 259) | def expire_open_dataset_agreement(self, account_id: str): method update_last_activity_ts (line 270) | def update_last_activity_ts(self, account_id: str): method daily_report (line 282) | def daily_report(self, date: datetime): method add_membership (line 407) | def add_membership(self, acct_id: str, membership: AccountMembership): method end_membership (line 425) | def end_membership(self, membership: AccountMembership): method end_active_membership (line 439) | def end_active_membership(self, customer_id: str): method get_active_account_membership (line 454) | def get_active_account_membership(self, account_id) -> Optional[Accoun... FILE: shared/selene/data/account/repository/agreement.py class AgreementRepository (line 34) | class AgreementRepository(object): method __init__ (line 35) | def __init__(self, db): method add (line 41) | def add(self, agreement: Agreement) -> str: method _add_agreement_content (line 50) | def _add_agreement_content(self, content): method _add_agreement (line 60) | def _add_agreement(self, agreement: Agreement, content_id: int) -> str: method expire (line 80) | def expire(self, agreement: Agreement, expire_date: date): method remove (line 95) | def remove(self, agreement: Agreement): method _get_agreement_content_id (line 110) | def _get_agreement_content_id(self, agreement_id: str) -> int: method get_active (line 120) | def get_active(self): method get_active_for_type (line 142) | def get_active_for_type(self, agreement_type): method _get_agreement_content (line 150) | def _get_agreement_content(self, content_id): FILE: shared/selene/data/account/repository/membership.py class MembershipRepository (line 28) | class MembershipRepository(RepositoryBase): method __init__ (line 29) | def __init__(self, db): method get_membership_types (line 32) | def get_membership_types(self): method get_membership_by_type (line 38) | def get_membership_by_type(self, membership_type: str): method add (line 45) | def add(self, membership: Membership): method remove (line 58) | def remove(self, membership: Membership): FILE: shared/selene/data/account/repository/skill.py class AccountSkillRepository (line 26) | class AccountSkillRepository(RepositoryBase): method __init__ (line 27) | def __init__(self, db, account_id): method get_skills_for_account (line 31) | def get_skills_for_account(self) -> List[AccountSkill]: FILE: shared/selene/data/device/entity/default.py class AccountDefaults (line 28) | class AccountDefaults: FILE: shared/selene/data/device/entity/device.py class PantacorConfig (line 29) | class PantacorConfig: class Device (line 41) | class Device: FILE: shared/selene/data/device/entity/device_skill.py class ManifestSkill (line 26) | class ManifestSkill(object): class AccountSkillSettings (line 39) | class AccountSkillSettings(object): class DeviceSkillSettings (line 48) | class DeviceSkillSettings(object): FILE: shared/selene/data/device/entity/geography.py class Geography (line 25) | class Geography(object): FILE: shared/selene/data/device/entity/preference.py class AccountPreferences (line 24) | class AccountPreferences(object): FILE: shared/selene/data/device/entity/text_to_speech.py class TextToSpeech (line 24) | class TextToSpeech(object): FILE: shared/selene/data/device/repository/default.py class DefaultsRepository (line 27) | class DefaultsRepository(RepositoryBase): method __init__ (line 30) | def __init__(self, db, account_id): method upsert (line 34) | def upsert(self, defaults): method get_account_defaults (line 44) | def get_account_defaults(self) -> AccountDefaults: FILE: shared/selene/data/device/repository/device.py class DeviceRepository (line 30) | class DeviceRepository(RepositoryBase): method __init__ (line 33) | def __init__(self, db): method get_device_by_id (line 36) | def get_device_by_id(self, device_id: str) -> Device: method get_devices_by_account_id (line 54) | def get_devices_by_account_id(self, account_id: str) -> List[Device]: method _build_device_from_row (line 74) | def _build_device_from_row(row: dict) -> Device: method get_account_device_count (line 86) | def get_account_device_count(self, account_id: str) -> int: method get_all_device_ids (line 96) | def get_all_device_ids(self) -> List: method get_subscription_type_by_device_id (line 102) | def get_subscription_type_by_device_id(self, device_id: str): method add (line 122) | def add(self, account_id: str, device: dict) -> str: method update_device_from_core (line 133) | def update_device_from_core(self, device_id: str, updates: dict): method add_text_to_speech (line 142) | def add_text_to_speech(self, text_to_speech: TextToSpeech) -> str: method remove_wake_word (line 160) | def remove_wake_word(self, wake_word_id: str): method remove_text_to_speech (line 167) | def remove_text_to_speech(self, text_to_speech_id: str): method remove (line 175) | def remove(self, device_id: str): method update_device_from_account (line 186) | def update_device_from_account( method upsert_pantacor_config (line 203) | def upsert_pantacor_config(self, device_id: str, pantacor_config: Pant... method update_pantacor_config (line 225) | def update_pantacor_config(self, device_id: str, updates: dict): method update_last_contact_ts (line 239) | def update_last_contact_ts(self, device_id: str, last_contact_ts: date... FILE: shared/selene/data/device/repository/device_skill.py class DeviceSkillRepository (line 34) | class DeviceSkillRepository(RepositoryBase): method __init__ (line 35) | def __init__(self, db): method get_skill_settings_for_account (line 38) | def get_skill_settings_for_account( method get_skill_settings_for_device (line 47) | def get_skill_settings_for_device(self, device_id, skill_id=None): method update_skill_settings (line 64) | def update_skill_settings( method upsert_device_skill_settings (line 75) | def upsert_device_skill_settings( method update_device_skill_settings (line 97) | def update_device_skill_settings(self, device_id, device_skill): method get_skill_manifest_for_device (line 114) | def get_skill_manifest_for_device(self, device_id: str) -> List[Manife... method get_skill_manifest_for_account (line 121) | def get_skill_manifest_for_account(self, account_id: str) -> List[Mani... method update_manifest_skill (line 128) | def update_manifest_skill(self, manifest_skill: ManifestSkill): method add_manifest_skill (line 135) | def add_manifest_skill(self, manifest_skill: ManifestSkill): method remove_manifest_skill (line 143) | def remove_manifest_skill(self, manifest_skill: ManifestSkill): method get_settings_display_usage (line 152) | def get_settings_display_usage(self, settings_display_id: str) -> int: method remove (line 161) | def remove(self, device_id, skill_id): FILE: shared/selene/data/device/repository/geography.py class GeographyRepository (line 24) | class GeographyRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db, account_id): method get_account_geographies (line 29) | def get_account_geographies(self): method get_geography_id (line 38) | def get_geography_id(self, geography: Geography): method add (line 54) | def add(self, geography: Geography): method get_location_by_device_id (line 69) | def get_location_by_device_id(self, device_id): FILE: shared/selene/data/device/repository/preference.py class PreferenceRepository (line 26) | class PreferenceRepository(RepositoryBase): method __init__ (line 27) | def __init__(self, db, account_id): method get_account_preferences (line 31) | def get_account_preferences(self) -> AccountPreferences: method upsert (line 45) | def upsert(self, preferences: AccountPreferences): FILE: shared/selene/data/device/repository/setting.py class SettingRepository (line 28) | class SettingRepository: method __init__ (line 31) | def __init__(self, db): method get_device_settings_by_device_id (line 34) | def get_device_settings_by_device_id(self, device_id: str): method convert_text_to_speech_setting (line 44) | def convert_text_to_speech_setting( method _format_date_v1 (line 69) | def _format_date_v1(self, date: str) -> str: method _format_time_v1 (line 82) | def _format_time_v1(self, time: str) -> str: method get_device_settings (line 95) | def get_device_settings(self, device_id: str) -> Optional[dict]: method _get_open_dataset_agreement_by_device_id (line 126) | def _get_open_dataset_agreement_by_device_id(self, device_id: str) -> ... FILE: shared/selene/data/device/repository/text_to_speech.py class TextToSpeechRepository (line 24) | class TextToSpeechRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db): method get_voices (line 28) | def get_voices(self): method add (line 34) | def add(self, text_to_speech: TextToSpeech): FILE: shared/selene/data/geography/entity/city.py class City (line 24) | class City(object): class GeographicLocation (line 33) | class GeographicLocation(object): FILE: shared/selene/data/geography/entity/country.py class Country (line 24) | class Country(object): FILE: shared/selene/data/geography/entity/region.py class Region (line 24) | class Region(object): FILE: shared/selene/data/geography/entity/timezone.py class Timezone (line 25) | class Timezone(object): FILE: shared/selene/data/geography/repository/city.py class CityRepository (line 24) | class CityRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db): method get_cities_by_region (line 28) | def get_cities_by_region(self, region_id): method get_geographic_location_by_city (line 36) | def get_geographic_location_by_city(self, possible_city_names: list): method get_biggest_city_in_region (line 45) | def get_biggest_city_in_region(self, region_name): method get_biggest_city_in_country (line 53) | def get_biggest_city_in_country(self, country_name): FILE: shared/selene/data/geography/repository/country.py class CountryRepository (line 24) | class CountryRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db): method get_countries (line 28) | def get_countries(self): FILE: shared/selene/data/geography/repository/region.py class RegionRepository (line 24) | class RegionRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db): method get_regions_by_country (line 28) | def get_regions_by_country(self, country_id): FILE: shared/selene/data/geography/repository/timezone.py class TimezoneRepository (line 24) | class TimezoneRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db): method get_timezones_by_country (line 28) | def get_timezones_by_country(self, country_id): FILE: shared/selene/data/metric/entity/account_activity.py class AccountActivity (line 24) | class AccountActivity: FILE: shared/selene/data/metric/entity/api.py class ApiMetric (line 26) | class ApiMetric(object): FILE: shared/selene/data/metric/entity/core.py class CoreMetric (line 26) | class CoreMetric(object): class CoreInteraction (line 34) | class CoreInteraction(object): FILE: shared/selene/data/metric/entity/job.py class JobMetric (line 25) | class JobMetric(object): FILE: shared/selene/data/metric/entity/stt.py class SttTranscriptionMetric (line 27) | class SttTranscriptionMetric: class SttEngineMetric (line 38) | class SttEngineMetric: FILE: shared/selene/data/metric/repository/account_activity.py class AccountActivityRepository (line 31) | class AccountActivityRepository(RepositoryBase): method __init__ (line 34) | def __init__(self, db): method increment_accounts_added (line 37) | def increment_accounts_added(self): method increment_accounts_deleted (line 42) | def increment_accounts_deleted(self): method increment_members_added (line 47) | def increment_members_added(self): method increment_members_expired (line 52) | def increment_members_expired(self): method increment_open_dataset_added (line 57) | def increment_open_dataset_added(self): method increment_open_dataset_deleted (line 64) | def increment_open_dataset_deleted(self): method increment_activity (line 71) | def increment_activity(self, account: Account): method _update_account_activity (line 90) | def _update_account_activity(self, update_request): method _add_account_activity_row (line 97) | def _add_account_activity_row(self): method get_activity_by_date (line 102) | def get_activity_by_date(self, activity_date: date) -> AccountActivity: method delete_activity_by_date (line 110) | def delete_activity_by_date(self, activity_date: date): FILE: shared/selene/data/metric/repository/api.py class ApiMetricsRepository (line 40) | class ApiMetricsRepository(RepositoryBase): method __init__ (line 41) | def __init__(self, db): method add (line 44) | def add(self, metric: ApiMetric): method create_partition (line 50) | def create_partition(self, partition_date: date): method copy_to_partition (line 67) | def copy_to_partition(self, partition_date: date): method remove_by_date (line 80) | def remove_by_date(self, partition_date: date): FILE: shared/selene/data/metric/repository/core.py class CoreMetricRepository (line 28) | class CoreMetricRepository(RepositoryBase): method __init__ (line 29) | def __init__(self, db): method add (line 32) | def add(self, metric: CoreMetric): method get_metrics_by_device (line 40) | def get_metrics_by_device(self, device_id): method get_metrics_by_date (line 47) | def get_metrics_by_date(self, metric_date: date) -> List[CoreMetric]: method add_interaction (line 54) | def add_interaction(self, interaction: CoreInteraction) -> str: FILE: shared/selene/data/metric/repository/job.py class JobRepository (line 26) | class JobRepository(RepositoryBase): method __init__ (line 27) | def __init__(self, db): method add (line 30) | def add(self, job: JobMetric): FILE: shared/selene/data/metric/repository/sql/create_api_metric_partition.sql type metric (line 1) | CREATE TABLE IF NOT EXISTS FILE: shared/selene/data/metric/repository/sql/create_api_metric_partition_index.sql type _access_ts_idx (line 1) | CREATE INDEX IF NOT EXISTS FILE: shared/selene/data/metric/repository/stt.py class TranscriptionMetricRepository (line 30) | class TranscriptionMetricRepository(RepositoryBase): method __init__ (line 33) | def __init__(self, db): method add (line 36) | def add(self, metric: SttTranscriptionMetric) -> str: method get_by_account (line 56) | def get_by_account(self, account_id: str) -> List[SttTranscriptionMetr... method delete_by_date (line 68) | def delete_by_date(self, transcription_date: date): FILE: shared/selene/data/repository_base.py function _instantiate_dataclass (line 36) | def _instantiate_dataclass(dataclass, db_result): class RepositoryBase (line 51) | class RepositoryBase(object): method __init__ (line 52) | def __init__(self, db, repository_path): method _build_db_request (line 57) | def _build_db_request( method _build_db_batch_request (line 67) | def _build_db_batch_request(self, sql_file_name: str, args: List[dict]): method _select_one_into_dataclass (line 73) | def _select_one_into_dataclass(self, dataclass, sql_file_name, args=No... method _select_all_into_dataclass (line 84) | def _select_all_into_dataclass(self, dataclass, sql_file_name, args=No... FILE: shared/selene/data/skill/entity/display.py class SkillDisplay (line 24) | class SkillDisplay(object): FILE: shared/selene/data/skill/entity/skill.py class SkillVersion (line 25) | class SkillVersion(object): class Skill (line 31) | class Skill(object): class SkillFamily (line 37) | class SkillFamily(object): FILE: shared/selene/data/skill/entity/skill_setting.py class AccountSkillSetting (line 25) | class AccountSkillSetting(object): class DeviceSkillSetting (line 32) | class DeviceSkillSetting(object): class SettingsDisplay (line 39) | class SettingsDisplay(object): FILE: shared/selene/data/skill/repository/display.py class SkillDisplayRepository (line 24) | class SkillDisplayRepository(RepositoryBase): method __init__ (line 25) | def __init__(self, db): method get_display_data_for_skills (line 31) | def get_display_data_for_skills(self): method get_display_data_for_skill (line 38) | def get_display_data_for_skill(self, skill_display_id) -> SkillDisplay: method upsert (line 45) | def upsert(self, skill_display: SkillDisplay): FILE: shared/selene/data/skill/repository/setting.py class SkillSettingRepository (line 29) | class SkillSettingRepository(RepositoryBase): method __init__ (line 30) | def __init__(self, db): method get_family_settings (line 34) | def get_family_settings( method get_installer_settings (line 43) | def get_installer_settings(self, account_id) -> List[AccountSkillSetti... method update_skill_settings (line 58) | def update_skill_settings( method get_skill_settings_for_device (line 76) | def get_skill_settings_for_device(self, device_id: str): FILE: shared/selene/data/skill/repository/settings_display.py class SettingsDisplayRepository (line 26) | class SettingsDisplayRepository(RepositoryBase): method __init__ (line 27) | def __init__(self, db): method add (line 30) | def add(self, settings_display: SettingsDisplay) -> str: method get_settings_display_id (line 43) | def get_settings_display_id(self, settings_display: SettingsDisplay): method get_settings_definitions_by_gid (line 56) | def get_settings_definitions_by_gid(self, global_id): method remove (line 69) | def remove(self, settings_display_id: str): FILE: shared/selene/data/skill/repository/skill.py function extract_family_from_global_id (line 26) | def extract_family_from_global_id(skill_gid: str) -> str: class SkillRepository (line 44) | class SkillRepository(RepositoryBase): method __init__ (line 47) | def __init__(self, db): method get_skills_for_account (line 51) | def get_skills_for_account(self, account_id: str) -> List[SkillFamily]: method get_skill_by_global_id (line 68) | def get_skill_by_global_id(self, skill_global_id: str) -> Skill: method ensure_skill_exists (line 80) | def ensure_skill_exists(self, skill_global_id: str) -> str: method _add_skill (line 95) | def _add_skill(self, skill_gid: str, name: str) -> str: method remove_by_gid (line 116) | def remove_by_gid(self, skill_gid): FILE: shared/selene/data/tagging/entity/file_designation.py class FileDesignation (line 24) | class FileDesignation: FILE: shared/selene/data/tagging/entity/file_location.py class TaggingFileLocation (line 24) | class TaggingFileLocation: FILE: shared/selene/data/tagging/entity/file_tag.py class FileTag (line 24) | class FileTag: FILE: shared/selene/data/tagging/entity/tag.py class Tag (line 27) | class Tag: FILE: shared/selene/data/tagging/entity/tag_value.py class TagValue (line 24) | class TagValue: FILE: shared/selene/data/tagging/entity/tagger.py class Tagger (line 24) | class Tagger: FILE: shared/selene/data/tagging/entity/wake_word_file.py class WakeWordFile (line 29) | class WakeWordFile: class TaggableFile (line 43) | class TaggableFile: FILE: shared/selene/data/tagging/repository/file_designation.py class FileDesignationRepository (line 27) | class FileDesignationRepository(RepositoryBase): method __init__ (line 30) | def __init__(self, db): method add (line 33) | def add(self, file_designation: FileDesignation): method get_from_date (line 41) | def get_from_date(self, wake_word, start_date) -> List[FileDesignation]: FILE: shared/selene/data/tagging/repository/file_location.py class TaggingFileLocationRepository (line 24) | class TaggingFileLocationRepository(RepositoryBase): method __init__ (line 27) | def __init__(self, db): method ensure_location_exists (line 30) | def ensure_location_exists( method add (line 45) | def add(self, file_location: TaggingFileLocation) -> str: method get_id (line 59) | def get_id(self, file_location: TaggingFileLocation) -> str: method remove (line 73) | def remove(self, file_location: TaggingFileLocation): FILE: shared/selene/data/tagging/repository/file_tag.py class FileTagRepository (line 27) | class FileTagRepository(RepositoryBase): method __init__ (line 30) | def __init__(self, db): method add (line 33) | def add(self, file_tag: FileTag): method get_designation_candidates (line 40) | def get_designation_candidates(self) -> defaultdict: FILE: shared/selene/data/tagging/repository/session.py class SessionRepository (line 25) | class SessionRepository(RepositoryBase): method __init__ (line 28) | def __init__(self, db): method ensure_session_exists (line 31) | def ensure_session_exists(self, tagger: Tagger): method add (line 49) | def add(self, tagger: Tagger, note: str = None): method _get_active (line 63) | def _get_active(self, tagger: Tagger): method _end_session (line 84) | def _end_session(self, session_id, end_ts): FILE: shared/selene/data/tagging/repository/tag.py class TagRepository (line 26) | class TagRepository(RepositoryBase): method __init__ (line 29) | def __init__(self, db): method get_all (line 32) | def get_all(self) -> List[Tag]: FILE: shared/selene/data/tagging/repository/tagger.py class TaggerRepository (line 25) | class TaggerRepository(RepositoryBase): method __init__ (line 28) | def __init__(self, db): method ensure_tagger_exists (line 31) | def ensure_tagger_exists(self, tagger: Tagger) -> str: method _get_by_entity (line 43) | def _get_by_entity(self, tagger: Tagger): method _add (line 59) | def _add(self, tagger: Tagger): FILE: shared/selene/data/tagging/repository/wake_word_file.py function build_tagging_file_name (line 41) | def build_tagging_file_name(file_contents): class WakeWordFileRepository (line 50) | class WakeWordFileRepository(RepositoryBase): method __init__ (line 53) | def __init__(self, db): method add (line 56) | def add(self, wake_word_file: WakeWordFile): method _handle_file_name_collision (line 102) | def _handle_file_name_collision(file_name: str, collisions: int): method get_by_wake_word (line 121) | def get_by_wake_word(self, wake_word: WakeWord) -> List[WakeWordFile]: method get_by_submission_date (line 140) | def get_by_submission_date(self, submission_date: date) -> List[WakeWo... method get_pending_delete (line 159) | def get_pending_delete(self) -> dict: method get_taggable_file (line 176) | def get_taggable_file( method _convert_db_row_to_dataclass (line 207) | def _convert_db_row_to_dataclass(row) -> WakeWordFile: method change_file_location (line 214) | def change_file_location(self, wake_word_file_id: str, file_location_i... method change_account_file_status (line 228) | def change_account_file_status(self, account_id: str, status: str): method change_file_status (line 240) | def change_file_status(self, wake_word_file: WakeWordFile, status: str): method remove (line 252) | def remove(self, wake_word_file: WakeWordFile): FILE: shared/selene/data/wake_word/entity/pocketsphinx_settings.py class PocketsphinxSettings (line 24) | class PocketsphinxSettings(object): FILE: shared/selene/data/wake_word/entity/wake_word.py class WakeWord (line 24) | class WakeWord(object): FILE: shared/selene/data/wake_word/repository/wake_word.py class WakeWordRepository (line 28) | class WakeWordRepository(RepositoryBase): method __init__ (line 31) | def __init__(self, db): method get_wake_words_for_web (line 34) | def get_wake_words_for_web(self) -> List[WakeWord]: method ensure_wake_word_exists (line 46) | def ensure_wake_word_exists(self, name: str, engine: str) -> WakeWord: method get_id (line 60) | def get_id(self, wake_word: WakeWord) -> str: method add (line 74) | def add(self, wake_word: WakeWord) -> str: method remove (line 87) | def remove(self, wake_word: WakeWord): FILE: shared/selene/testing/account.py function build_test_account (line 35) | def build_test_account(**overrides: Any): function add_account (line 53) | def add_account(db, **overrides: Any) -> Account: function remove_account (line 70) | def remove_account(db, account: Account): function build_test_membership (line 80) | def build_test_membership(**overrides: Any) -> AccountMembership: function add_account_membership (line 96) | def add_account_membership(db, account_id: str, **overrides: Any) -> Acc... FILE: shared/selene/testing/account_activity.py function get_account_activity (line 27) | def get_account_activity(db): function remove_account_activity (line 32) | def remove_account_activity(db): function check_account_metrics (line 37) | def check_account_metrics(context, total, changed): FILE: shared/selene/testing/account_geography.py function add_account_geography (line 23) | def add_account_geography(db, account, **overrides): FILE: shared/selene/testing/account_preference.py function add_account_preference (line 23) | def add_account_preference(db, account_id): FILE: shared/selene/testing/agreement.py function _build_test_terms_of_use (line 36) | def _build_test_terms_of_use(): function _build_test_privacy_policy (line 48) | def _build_test_privacy_policy(): function _build_open_dataset (line 65) | def _build_open_dataset(): function add_agreements (line 73) | def add_agreements(context): function remove_agreements (line 87) | def remove_agreements(db, agreements: List[Agreement]): function get_agreements_from_api (line 93) | def get_agreements_from_api(context, agreement): function validate_agreement_response (line 105) | def validate_agreement_response(context, agreement): FILE: shared/selene/testing/api.py function generate_access_token (line 33) | def generate_access_token(context, duration=ONE_MINUTE): function set_access_token_cookie (line 41) | def set_access_token_cookie(context, duration=ONE_MINUTE): function generate_refresh_token (line 50) | def generate_refresh_token(context, duration=TWO_MINUTES): function set_refresh_token_cookie (line 60) | def set_refresh_token_cookie(context, duration=TWO_MINUTES): function validate_token_cookies (line 69) | def validate_token_cookies(context, expired=False): function _parse_cookie (line 89) | def _parse_cookie(cookie: str) -> dict: function get_account (line 101) | def get_account(context) -> Account: function check_http_success (line 109) | def check_http_success(context): function check_http_error (line 115) | def check_http_error(context, error_type): FILE: shared/selene/testing/device.py function add_device (line 23) | def add_device(db, account_id, geography_id): function add_pantacor_config (line 43) | def add_pantacor_config(db, device_id): FILE: shared/selene/testing/device_skill.py function add_device_skill (line 26) | def add_device_skill(db, device_id, skill): function add_device_skill_settings (line 42) | def add_device_skill_settings(db, device_id, settings_display, settings_... function remove_device_skill (line 49) | def remove_device_skill(db, manifest_skill): FILE: shared/selene/testing/membership.py function insert_memberships (line 38) | def insert_memberships(db): function delete_memberships (line 48) | def delete_memberships(db, memberships): FILE: shared/selene/testing/skill.py function build_text_field (line 28) | def build_text_field(): function build_checkbox_field (line 37) | def build_checkbox_field(): function build_label_field (line 41) | def build_label_field(): function _build_display_data (line 45) | def _build_display_data(skill_gid, fields): function add_skill (line 64) | def add_skill(db, skill_global_id, settings_fields=None): function remove_skill (line 76) | def remove_skill(db, skill): FILE: shared/selene/testing/tagging.py function remove_wake_word_files (line 29) | def remove_wake_word_files(db, wake_word_file): function add_wake_word_file (line 35) | def add_wake_word_file(context, file_name): FILE: shared/selene/testing/test_db.py function create_test_db (line 27) | def create_test_db(): function drop_test_db (line 41) | def drop_test_db(): FILE: shared/selene/testing/text_to_speech.py function _build_voice (line 23) | def _build_voice(): function add_text_to_speech (line 31) | def add_text_to_speech(db): function remove_text_to_speech (line 39) | def remove_text_to_speech(db, voice): FILE: shared/selene/testing/wake_word.py function add_wake_word (line 24) | def add_wake_word(db) -> WakeWord: function remove_wake_word (line 37) | def remove_wake_word(db, wake_word: WakeWord): FILE: shared/selene/util/auth.py class AuthenticationError (line 35) | class AuthenticationError(Exception): class AuthenticationToken (line 39) | class AuthenticationToken: method __init__ (line 43) | def __init__(self, secret: str, duration: int): method generate (line 51) | def generate(self, account_id: str): method validate (line 62) | def validate(self): function get_google_account_email (line 81) | def get_google_account_email(token: str) -> str: function get_facebook_account_email (line 99) | def get_facebook_account_email(token: str) -> str: function get_github_account_email (line 111) | def get_github_account_email(token: str) -> str: function get_github_authentication_token (line 131) | def get_github_authentication_token(access_code: str, state: str) -> str: FILE: shared/selene/util/cache.py class SeleneCache (line 31) | class SeleneCache(object): method __init__ (line 32) | def __init__(self): method set_if_not_exists_with_expiration (line 38) | def set_if_not_exists_with_expiration( method set_with_expiration (line 51) | def set_with_expiration(self, key, value, expiration: int): method get (line 56) | def get(self, key): method delete (line 60) | def delete(self, key): method set (line 64) | def set(self, key, value): FILE: shared/selene/util/db/connection.py class DBConnectionError (line 37) | class DBConnectionError(Exception): class DatabaseConnectionConfig (line 42) | class DatabaseConnectionConfig: method __post_init__ (line 55) | def __post_init__(self, use_namedtuple_cursor: bool): function connect_to_db (line 60) | def connect_to_db(connection_config: DatabaseConnectionConfig): FILE: shared/selene/util/db/connection_pool.py function allocate_db_connection_pool (line 33) | def allocate_db_connection_pool( function get_db_connection (line 71) | def get_db_connection(connection_pool, autocommit=True): function get_db_connection_from_pool (line 90) | def get_db_connection_from_pool(connection_pool, autocommit=True): function return_db_connection_to_pool (line 103) | def return_db_connection_to_pool(connection_pool, connection): FILE: shared/selene/util/db/cursor.py function get_sql_from_file (line 36) | def get_sql_from_file(file_path: str) -> str: class DatabaseRequest (line 53) | class DatabaseRequest: class DatabaseBatchRequest (line 61) | class DatabaseBatchRequest: class Cursor (line 68) | class Cursor: method __init__ (line 71) | def __init__(self, db): method _fetch (line 74) | def _fetch(self, db_request: DatabaseRequest, singleton=False): method select_one (line 93) | def select_one(self, db_request: DatabaseRequest): method select_all (line 102) | def select_all(self, db_request: DatabaseRequest): method execute (line 111) | def execute(self, db_request: DatabaseRequest): method _execute_batch (line 124) | def _execute_batch(self, db_request: DatabaseBatchRequest): method delete (line 130) | def delete(self, db_request: DatabaseRequest): method insert (line 135) | def insert(self, db_request: DatabaseRequest): method insert_returning (line 139) | def insert_returning(self, db_request: DatabaseRequest): method update (line 143) | def update(self, db_request: DatabaseRequest): method batch_update (line 148) | def batch_update(self, db_request: DatabaseBatchRequest): method dump_query_result_to_file (line 152) | def dump_query_result_to_file( method load_dump_file_to_table (line 166) | def load_dump_file_to_table(self, table_name: str, dump_file_path: str): FILE: shared/selene/util/db/transaction.py function use_transaction (line 24) | def use_transaction(func): FILE: shared/selene/util/email/email.py function validate_email_address (line 35) | def validate_email_address(email_address: str) -> Tuple[Optional[str], O... class EmailMessage (line 53) | class EmailMessage: method __post_init__ (line 64) | def __post_init__(self): class SeleneMailer (line 71) | class SeleneMailer: # pylint: disable=too-few-public-methods method __init__ (line 76) | def __init__(self, message: EmailMessage): method send (line 80) | def send(self, using_jinja: bool = False): method _build_content (line 100) | def _build_content(self, using_jinja: bool) -> Content: method _build_content_from_html_template (line 116) | def _build_content_from_html_template(self): method _build_content_from_jinja_template (line 128) | def _build_content_from_jinja_template(self): FILE: shared/selene/util/exceptions.py class NotModifiedException (line 23) | class NotModifiedException(Exception): FILE: shared/selene/util/github.py function log_into_github (line 31) | def log_into_github(user_name: str, user_password: str) -> Github: function download_repository_file (line 37) | def download_repository_file( FILE: shared/selene/util/log.py function _generate_log_config (line 47) | def _generate_log_config(service: str) -> dict: function configure_selene_logger (line 81) | def configure_selene_logger(service): function get_selene_logger (line 97) | def get_selene_logger(module_name: str): FILE: shared/selene/util/payment/stripe.py function create_stripe_account (line 25) | def create_stripe_account(token: str, email: str): function create_stripe_subscription (line 31) | def create_stripe_subscription(customer_id, plan): function cancel_stripe_subscription (line 38) | def cancel_stripe_subscription(subscription_id): FILE: shared/selene/util/ssh/sftp.py function get_remote_file (line 28) | def get_remote_file(ssh_config: SshClientConfig, local_path: Path, remot... FILE: shared/selene/util/ssh/ssh.py class SshClientConfig (line 37) | class SshClientConfig: method __post_init__ (line 47) | def __post_init__(self): class SeleneSshClient (line 55) | class SeleneSshClient: method __init__ (line 60) | def __init__(self, config: SshClientConfig): method _check_ssh_key (line 67) | def _check_ssh_key(self): method client (line 78) | def client(self): method connect (line 87) | def connect(self): method disconnect (line 106) | def disconnect(self): function validate_rsa_public_key (line 111) | def validate_rsa_public_key(public_key: str) -> bool: function _parse_public_key (line 137) | def _parse_public_key(public_key: str) -> Tuple[str, str]: