mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-11-04 11:57:16 +00:00
Codex caught three deleted public methods earlier and a later scan found twelve more, because nothing tested for them. The golden records every public module function, class and method; the test fails only on a removal, and accepts a name that still resolves through a base class or re-export.
1456 lines
43 KiB
JSON
1456 lines
43 KiB
JSON
{
|
|
"modules/admin_server.py": [
|
|
"BotAdminServer",
|
|
"BotAdminServer.run"
|
|
],
|
|
"modules/alert_format.py": [
|
|
"AlertTime",
|
|
"abbreviate_city_name",
|
|
"compact_time",
|
|
"event_type_abbrev",
|
|
"extract_clock",
|
|
"first_location",
|
|
"format_alert_compact",
|
|
"format_alert_window",
|
|
"format_event_label",
|
|
"format_event_plain",
|
|
"format_office",
|
|
"parse_display_time",
|
|
"severity_emoji",
|
|
"shorten_event",
|
|
"translate_or"
|
|
],
|
|
"modules/bridge_outbound.py": [
|
|
"is_valid_discord_webhook_url",
|
|
"neutralize_discord_mention_content",
|
|
"post_discord_webhook",
|
|
"post_telegram_message"
|
|
],
|
|
"modules/channel_manager.py": [
|
|
"ChannelManager",
|
|
"ChannelManager.add_channel",
|
|
"ChannelManager.add_hashtag_channel",
|
|
"ChannelManager.fetch_all_channels",
|
|
"ChannelManager.fetch_channels",
|
|
"ChannelManager.generate_hashtag_key",
|
|
"ChannelManager.get_channel",
|
|
"ChannelManager.get_channel_by_name",
|
|
"ChannelManager.get_channel_info",
|
|
"ChannelManager.get_channel_key",
|
|
"ChannelManager.get_channel_name",
|
|
"ChannelManager.get_channel_number",
|
|
"ChannelManager.get_configured_channels",
|
|
"ChannelManager.invalidate_cache",
|
|
"ChannelManager.remove_channel"
|
|
],
|
|
"modules/clients/espn_client.py": [
|
|
"ESPNClient",
|
|
"ESPNClient.extract_score",
|
|
"ESPNClient.extract_shootout_score",
|
|
"ESPNClient.fetch_live_event_data",
|
|
"ESPNClient.fetch_match_states",
|
|
"ESPNClient.fetch_scoreboard",
|
|
"ESPNClient.fetch_scoreboard_with_calendar",
|
|
"ESPNClient.fetch_standings",
|
|
"ESPNClient.fetch_team_fixtures",
|
|
"ESPNClient.fetch_team_schedule",
|
|
"ESPNClient.parse_game_event_with_timestamp",
|
|
"ESPNClient.parse_league_game_event"
|
|
],
|
|
"modules/clients/mqtt_weather.py": [
|
|
"MqttWeatherCache",
|
|
"MqttWeatherCache.clear",
|
|
"MqttWeatherCache.get",
|
|
"MqttWeatherCache.update",
|
|
"MqttWeatherFormatConfig",
|
|
"format_mqtt_weather_payload",
|
|
"get_mqtt_weather_topic",
|
|
"iter_mqtt_weather_topics",
|
|
"load_mqtt_weather_format_config",
|
|
"mqtt_weather_display_for_topic",
|
|
"validate_mqtt_weather_topic"
|
|
],
|
|
"modules/clients/noaa_aurora_client.py": [
|
|
"AuroraData",
|
|
"NOAAAuroraClient",
|
|
"NOAAAuroraClient.clear_cache",
|
|
"NOAAAuroraClient.get_aurora_data",
|
|
"NOAAAuroraClient.get_aurora_probability",
|
|
"NOAAAuroraClient.get_kp_index"
|
|
],
|
|
"modules/clients/sports_mappings.py": [
|
|
"format_clean_date",
|
|
"format_clean_date_time",
|
|
"get_team_abbreviation",
|
|
"get_team_abbreviation_from_name",
|
|
"is_soccer",
|
|
"is_womens_league"
|
|
],
|
|
"modules/clients/thesportsdb_client.py": [
|
|
"TheSportsDBClient",
|
|
"TheSportsDBClient.fetch_league_scores",
|
|
"TheSportsDBClient.fetch_team_games",
|
|
"TheSportsDBClient.fetch_team_schedule",
|
|
"TheSportsDBClient.get_events_by_day",
|
|
"TheSportsDBClient.get_league_events_next",
|
|
"TheSportsDBClient.get_league_events_past",
|
|
"TheSportsDBClient.get_league_teams",
|
|
"TheSportsDBClient.get_team_events_last",
|
|
"TheSportsDBClient.get_team_events_next",
|
|
"TheSportsDBClient.parse_event",
|
|
"TheSportsDBClient.search_team"
|
|
],
|
|
"modules/clients/worldcup_data.py": [
|
|
"WorldCupData",
|
|
"WorldCupData.get_active_tournament",
|
|
"WorldCupData.get_team_groups",
|
|
"WorldCupData.resolve_nation"
|
|
],
|
|
"modules/clients/worldcup_fastcast.py": [
|
|
"WorldCupFastcastClient",
|
|
"WorldCupFastcastClient.run",
|
|
"WorldCupFastcastClient.stop"
|
|
],
|
|
"modules/clients/wxsim_parser.py": [
|
|
"ForecastPeriod",
|
|
"HourlyData",
|
|
"PeriodType",
|
|
"WXSIMForecast",
|
|
"WXSIMParser",
|
|
"WXSIMParser.fetch_from_url",
|
|
"WXSIMParser.format_current_conditions",
|
|
"WXSIMParser.format_forecast_summary",
|
|
"WXSIMParser.get_forecast_date",
|
|
"WXSIMParser.is_forecast_stale",
|
|
"WXSIMParser.parse"
|
|
],
|
|
"modules/command_manager.py": [
|
|
"CommandManager",
|
|
"CommandManager.channel_body_budget",
|
|
"CommandManager.check_keywords",
|
|
"CommandManager.command_prefix",
|
|
"CommandManager.effective_channel_send_scope",
|
|
"CommandManager.execute_commands",
|
|
"CommandManager.format_keyword_response",
|
|
"CommandManager.get_available_commands_list",
|
|
"CommandManager.get_general_help",
|
|
"CommandManager.get_help_for_command",
|
|
"CommandManager.get_max_message_length",
|
|
"CommandManager.get_plugin_by_keyword",
|
|
"CommandManager.get_plugin_by_name",
|
|
"CommandManager.get_plugin_metadata",
|
|
"CommandManager.get_rate_limit_key",
|
|
"CommandManager.get_rate_limit_wait_seconds",
|
|
"CommandManager.handle_advert_command",
|
|
"CommandManager.is_user_banned",
|
|
"CommandManager.links_split_across",
|
|
"CommandManager.load_banned_users",
|
|
"CommandManager.load_channel_keywords",
|
|
"CommandManager.load_custom_syntax",
|
|
"CommandManager.load_keywords",
|
|
"CommandManager.load_monitor_channels",
|
|
"CommandManager.match_randomline",
|
|
"CommandManager.normalize_command_content",
|
|
"CommandManager.part_suffix",
|
|
"CommandManager.record_command_stat",
|
|
"CommandManager.reload_plugin",
|
|
"CommandManager.render_command_output",
|
|
"CommandManager.resolve_channel_send_scope",
|
|
"CommandManager.resolve_command_by_trigger",
|
|
"CommandManager.send_channel_message",
|
|
"CommandManager.send_channel_messages_chunked",
|
|
"CommandManager.send_dm",
|
|
"CommandManager.send_response",
|
|
"CommandManager.send_response_chunked",
|
|
"CommandManager.split_text_into_chunks",
|
|
"CommandManager.split_text_into_numbered_utf8_chunks",
|
|
"CommandManager.split_text_into_utf8_chunks",
|
|
"InternetStatusCache",
|
|
"InternetStatusCache.is_valid",
|
|
"QueuedCommand"
|
|
],
|
|
"modules/command_prefix.py": [
|
|
"find_matching_prefix",
|
|
"load_command_prefix_settings",
|
|
"normalize_command_content",
|
|
"parse_command_prefixes"
|
|
],
|
|
"modules/commands/advert_command.py": [
|
|
"AdvertCommand",
|
|
"AdvertCommand.can_execute",
|
|
"AdvertCommand.execute",
|
|
"AdvertCommand.get_help_text"
|
|
],
|
|
"modules/commands/airplanes_command.py": [
|
|
"AirplanesCommand",
|
|
"AirplanesCommand.execute",
|
|
"AirplanesCommand.get_help_text",
|
|
"is_deprecated_public_airplanes_live_url",
|
|
"normalize_api_url"
|
|
],
|
|
"modules/commands/alert_command.py": [
|
|
"AlertCommand",
|
|
"AlertCommand.execute"
|
|
],
|
|
"modules/commands/alternatives/wx_international.py": [
|
|
"GlobalWxCommand",
|
|
"GlobalWxCommand.execute",
|
|
"GlobalWxCommand.format_multiday_forecast",
|
|
"GlobalWxCommand.format_tomorrow_forecast",
|
|
"GlobalWxCommand.geocode_location",
|
|
"GlobalWxCommand.get_help_text",
|
|
"GlobalWxCommand.get_open_meteo_weather",
|
|
"GlobalWxCommand.get_weather_for_location",
|
|
"GlobalWxCommand.matches_keyword",
|
|
"GlobalWxCommand.metric_distance"
|
|
],
|
|
"modules/commands/announcements_command.py": [
|
|
"AnnouncementsCommand",
|
|
"AnnouncementsCommand.can_execute",
|
|
"AnnouncementsCommand.execute"
|
|
],
|
|
"modules/commands/aqi_command.py": [
|
|
"AqiCommand",
|
|
"AqiCommand.city_to_lat_lon",
|
|
"AqiCommand.execute",
|
|
"AqiCommand.format_aqi_response",
|
|
"AqiCommand.get_aqi_category",
|
|
"AqiCommand.get_aqi_emoji",
|
|
"AqiCommand.get_aqi_for_location",
|
|
"AqiCommand.get_european_aqi_emoji",
|
|
"AqiCommand.get_help_text",
|
|
"AqiCommand.get_neighborhood_queries",
|
|
"AqiCommand.get_openmeteo_aqi",
|
|
"AqiCommand.get_pollutant_help"
|
|
],
|
|
"modules/commands/aurora_command.py": [
|
|
"AuroraCommand",
|
|
"AuroraCommand.execute"
|
|
],
|
|
"modules/commands/base_command.py": [
|
|
"BaseCommand",
|
|
"BaseCommand.build_enhanced_connection_info",
|
|
"BaseCommand.can_execute",
|
|
"BaseCommand.can_execute_now",
|
|
"BaseCommand.check_cooldown",
|
|
"BaseCommand.cleanup_message_for_matching",
|
|
"BaseCommand.detect_response_language",
|
|
"BaseCommand.enforce_path_byte_requirement",
|
|
"BaseCommand.execute",
|
|
"BaseCommand.format_elapsed",
|
|
"BaseCommand.format_response",
|
|
"BaseCommand.format_timestamp",
|
|
"BaseCommand.get_config_value",
|
|
"BaseCommand.get_help_text",
|
|
"BaseCommand.get_hops_display_values",
|
|
"BaseCommand.get_max_message_length",
|
|
"BaseCommand.get_metadata",
|
|
"BaseCommand.get_path_display_string",
|
|
"BaseCommand.get_queue_threshold_seconds",
|
|
"BaseCommand.get_remaining_cooldown",
|
|
"BaseCommand.get_response_format",
|
|
"BaseCommand.get_standard_placeholder_fields",
|
|
"BaseCommand.get_usage_info",
|
|
"BaseCommand.handle_keyword_match",
|
|
"BaseCommand.is_channel_allowed",
|
|
"BaseCommand.matches_custom_syntax",
|
|
"BaseCommand.matches_keyword",
|
|
"BaseCommand.record_execution",
|
|
"BaseCommand.requires_admin_access",
|
|
"BaseCommand.respond_in_sender_language",
|
|
"BaseCommand.response_translator",
|
|
"BaseCommand.send_response",
|
|
"BaseCommand.send_response_chunked",
|
|
"BaseCommand.should_execute",
|
|
"BaseCommand.split_trigger_and_args",
|
|
"BaseCommand.translate",
|
|
"BaseCommand.translate_get_value",
|
|
"BaseCommand.translated_or"
|
|
],
|
|
"modules/commands/catfact_command.py": [
|
|
"CatfactCommand",
|
|
"CatfactCommand.execute",
|
|
"CatfactCommand.get_cat_facts",
|
|
"CatfactCommand.get_help_text"
|
|
],
|
|
"modules/commands/channelpause_command.py": [
|
|
"ChannelPauseCommand",
|
|
"ChannelPauseCommand.execute",
|
|
"ChannelPauseCommand.get_help_text"
|
|
],
|
|
"modules/commands/channels_command.py": [
|
|
"ChannelsCommand",
|
|
"ChannelsCommand.execute",
|
|
"ChannelsCommand.get_help_text",
|
|
"ChannelsCommand.matches_keyword"
|
|
],
|
|
"modules/commands/cmd_command.py": [
|
|
"CmdCommand",
|
|
"CmdCommand.execute",
|
|
"CmdCommand.get_help_text"
|
|
],
|
|
"modules/commands/contact_command.py": [
|
|
"ContactCommand",
|
|
"ContactCommand.execute",
|
|
"ContactCommand.get_help_text",
|
|
"ContactCommand.matches_keyword"
|
|
],
|
|
"modules/commands/dadjoke_command.py": [
|
|
"DadJokeCommand",
|
|
"DadJokeCommand.can_execute",
|
|
"DadJokeCommand.execute",
|
|
"DadJokeCommand.format_dad_joke",
|
|
"DadJokeCommand.get_dad_joke_from_api",
|
|
"DadJokeCommand.get_dad_joke_with_length_handling",
|
|
"DadJokeCommand.get_help_text",
|
|
"DadJokeCommand.matches_keyword",
|
|
"DadJokeCommand.send_dad_joke_with_length_handling",
|
|
"DadJokeCommand.split_dad_joke"
|
|
],
|
|
"modules/commands/dice_command.py": [
|
|
"DiceCommand",
|
|
"DiceCommand.execute",
|
|
"DiceCommand.format_dice_result",
|
|
"DiceCommand.format_mixed_dice_result",
|
|
"DiceCommand.get_help_text",
|
|
"DiceCommand.parse_dice_notation",
|
|
"DiceCommand.parse_mixed_dice",
|
|
"DiceCommand.roll_dice"
|
|
],
|
|
"modules/commands/feed_command.py": [
|
|
"FeedCommand",
|
|
"FeedCommand.execute",
|
|
"FeedCommand.get_help_text"
|
|
],
|
|
"modules/commands/greeter_command.py": [
|
|
"GreeterCommand",
|
|
"GreeterCommand.backfill_greeted_users",
|
|
"GreeterCommand.check_message_for_human_greeting",
|
|
"GreeterCommand.execute",
|
|
"GreeterCommand.get_greeted_users_count",
|
|
"GreeterCommand.get_help_text",
|
|
"GreeterCommand.get_recent_greeted_users",
|
|
"GreeterCommand.has_been_greeted",
|
|
"GreeterCommand.mark_as_greeted",
|
|
"GreeterCommand.matches_custom_syntax",
|
|
"GreeterCommand.matches_keyword",
|
|
"GreeterCommand.should_execute",
|
|
"GreeterCommand.start_rollout"
|
|
],
|
|
"modules/commands/hacker_command.py": [
|
|
"HackerCommand",
|
|
"HackerCommand.execute",
|
|
"HackerCommand.get_hacker_error",
|
|
"HackerCommand.get_help_text",
|
|
"HackerCommand.matches_keyword"
|
|
],
|
|
"modules/commands/hello_command.py": [
|
|
"HelloCommand",
|
|
"HelloCommand.execute",
|
|
"HelloCommand.get_afternoon_greetings",
|
|
"HelloCommand.get_emoji_response",
|
|
"HelloCommand.get_emoji_responses",
|
|
"HelloCommand.get_evening_greetings",
|
|
"HelloCommand.get_greeting_openings",
|
|
"HelloCommand.get_help_text",
|
|
"HelloCommand.get_human_descriptors",
|
|
"HelloCommand.get_morning_greetings",
|
|
"HelloCommand.get_random_greeting",
|
|
"HelloCommand.get_sender_mention",
|
|
"HelloCommand.is_emoji_only_message",
|
|
"HelloCommand.matches_custom_syntax"
|
|
],
|
|
"modules/commands/help_command.py": [
|
|
"HelpCommand",
|
|
"HelpCommand.execute",
|
|
"HelpCommand.get_available_commands_list",
|
|
"HelpCommand.get_general_help",
|
|
"HelpCommand.get_help_text",
|
|
"HelpCommand.get_specific_help"
|
|
],
|
|
"modules/commands/hfcond_command.py": [
|
|
"HfcondCommand",
|
|
"HfcondCommand.execute",
|
|
"HfcondCommand.get_help_text"
|
|
],
|
|
"modules/commands/joke_command.py": [
|
|
"JokeCommand",
|
|
"JokeCommand.can_execute",
|
|
"JokeCommand.execute",
|
|
"JokeCommand.format_joke",
|
|
"JokeCommand.get_help_text",
|
|
"JokeCommand.get_joke_from_api",
|
|
"JokeCommand.get_joke_with_length_handling",
|
|
"JokeCommand.get_seasonal_default",
|
|
"JokeCommand.is_dark_joke_request",
|
|
"JokeCommand.matches_keyword",
|
|
"JokeCommand.send_joke_with_length_handling",
|
|
"JokeCommand.split_joke"
|
|
],
|
|
"modules/commands/magic8_command.py": [
|
|
"Magic8Command",
|
|
"Magic8Command.execute",
|
|
"Magic8Command.get_help_text",
|
|
"Magic8Command.get_response_format",
|
|
"magic8"
|
|
],
|
|
"modules/commands/moon_command.py": [
|
|
"MoonCommand",
|
|
"MoonCommand.execute",
|
|
"MoonCommand.get_help_text"
|
|
],
|
|
"modules/commands/multitest_command.py": [
|
|
"MultitestCommand",
|
|
"MultitestCommand.condense_paths",
|
|
"MultitestCommand.execute",
|
|
"MultitestCommand.extract_path_from_message",
|
|
"MultitestCommand.extract_path_from_rf_data",
|
|
"MultitestCommand.get_help_text",
|
|
"MultitestCommand.get_rf_data_for_message",
|
|
"MultitestCommand.on_message_received",
|
|
"MultitestSession"
|
|
],
|
|
"modules/commands/neighbors_command.py": [
|
|
"NeighborsCommand",
|
|
"NeighborsCommand.execute",
|
|
"NeighborsCommand.get_help_text"
|
|
],
|
|
"modules/commands/path_command.py": [
|
|
"PathCommand",
|
|
"PathCommand.execute",
|
|
"PathCommand.get_help",
|
|
"PathCommand.get_help_text"
|
|
],
|
|
"modules/commands/ping_command.py": [
|
|
"PingCommand",
|
|
"PingCommand.execute",
|
|
"PingCommand.get_help_text",
|
|
"PingCommand.get_response_format"
|
|
],
|
|
"modules/commands/prefix_command.py": [
|
|
"PrefixCommand",
|
|
"PrefixCommand.execute",
|
|
"PrefixCommand.find_best_prefix_for_location",
|
|
"PrefixCommand.format_best_prefix_response",
|
|
"PrefixCommand.format_free_prefixes_response",
|
|
"PrefixCommand.format_prefix_response",
|
|
"PrefixCommand.get_free_prefixes",
|
|
"PrefixCommand.get_help_text",
|
|
"PrefixCommand.get_prefix_data",
|
|
"PrefixCommand.get_prefix_data_from_db",
|
|
"PrefixCommand.refresh_cache"
|
|
],
|
|
"modules/commands/rain_command.py": [
|
|
"NowcastResult",
|
|
"RainCommand",
|
|
"RainCommand.execute",
|
|
"RainCommand.get_help_text",
|
|
"analyze_precip_nowcast",
|
|
"decide_rain_notification",
|
|
"episode_probability_temp",
|
|
"fetch_precip_series",
|
|
"fetch_precip_series_nws",
|
|
"format_amount_estimate",
|
|
"format_precip_amount",
|
|
"format_snow_amount",
|
|
"nws_http_means_no_coverage",
|
|
"precip_bucket_for_code",
|
|
"precip_descriptor"
|
|
],
|
|
"modules/commands/reload_command.py": [
|
|
"ReloadCommand",
|
|
"ReloadCommand.execute",
|
|
"ReloadCommand.get_help_text"
|
|
],
|
|
"modules/commands/repeater_command.py": [
|
|
"RepeaterCommand",
|
|
"RepeaterCommand.execute",
|
|
"RepeaterCommand.get_help",
|
|
"RepeaterCommand.matches_keyword"
|
|
],
|
|
"modules/commands/roll_command.py": [
|
|
"RollCommand",
|
|
"RollCommand.execute",
|
|
"RollCommand.format_roll_result",
|
|
"RollCommand.get_help_text",
|
|
"RollCommand.matches_keyword",
|
|
"RollCommand.parse_roll_notation",
|
|
"RollCommand.roll_number"
|
|
],
|
|
"modules/commands/satpass_command.py": [
|
|
"SatpassCommand",
|
|
"SatpassCommand.execute",
|
|
"SatpassCommand.get_help_text"
|
|
],
|
|
"modules/commands/schedule_command.py": [
|
|
"ScheduleCommand",
|
|
"ScheduleCommand.can_execute",
|
|
"ScheduleCommand.execute",
|
|
"ScheduleCommand.get_help_text"
|
|
],
|
|
"modules/commands/solar_command.py": [
|
|
"SolarCommand",
|
|
"SolarCommand.execute",
|
|
"SolarCommand.get_help_text"
|
|
],
|
|
"modules/commands/solarforecast_command.py": [
|
|
"SolarforecastCommand",
|
|
"SolarforecastCommand.execute",
|
|
"SolarforecastCommand.get_help_text"
|
|
],
|
|
"modules/commands/sports_command.py": [
|
|
"SportsCommand",
|
|
"SportsCommand.execute",
|
|
"SportsCommand.fetch_team_game_data",
|
|
"SportsCommand.fetch_team_games",
|
|
"SportsCommand.fetch_team_games_thesportsdb",
|
|
"SportsCommand.fetch_team_schedule",
|
|
"SportsCommand.fetch_team_schedule_formatted",
|
|
"SportsCommand.fetch_team_schedule_thesportsdb",
|
|
"SportsCommand.fetch_team_score",
|
|
"SportsCommand.get_city_scores",
|
|
"SportsCommand.get_city_teams",
|
|
"SportsCommand.get_default_teams_scores",
|
|
"SportsCommand.get_help_text",
|
|
"SportsCommand.get_league_info",
|
|
"SportsCommand.get_league_scores",
|
|
"SportsCommand.get_league_scores_thesportsdb",
|
|
"SportsCommand.get_team_scores",
|
|
"SportsCommand.load_channel_overrides",
|
|
"SportsCommand.load_default_teams",
|
|
"SportsCommand.load_sports_channels",
|
|
"SportsCommand.matches_keyword",
|
|
"SportsCommand.resolve_world_cup_nation"
|
|
],
|
|
"modules/commands/stats_command.py": [
|
|
"StatsCommand",
|
|
"StatsCommand.cleanup_old_stats",
|
|
"StatsCommand.execute",
|
|
"StatsCommand.get_help_text",
|
|
"StatsCommand.get_stats_summary",
|
|
"StatsCommand.record_command",
|
|
"StatsCommand.record_message",
|
|
"StatsCommand.record_path_stats"
|
|
],
|
|
"modules/commands/status_command.py": [
|
|
"StatusCommand",
|
|
"StatusCommand.execute"
|
|
],
|
|
"modules/commands/sun_command.py": [
|
|
"SunCommand",
|
|
"SunCommand.execute",
|
|
"SunCommand.get_help_text"
|
|
],
|
|
"modules/commands/test_command.py": [
|
|
"TestCommand",
|
|
"TestCommand.clean_content",
|
|
"TestCommand.execute",
|
|
"TestCommand.format_response",
|
|
"TestCommand.get_help_text",
|
|
"TestCommand.get_response_format",
|
|
"TestCommand.matches_keyword"
|
|
],
|
|
"modules/commands/trace_command.py": [
|
|
"TraceCommand",
|
|
"TraceCommand.execute",
|
|
"TraceCommand.get_help_text"
|
|
],
|
|
"modules/commands/version_command.py": [
|
|
"VersionCommand",
|
|
"VersionCommand.execute",
|
|
"VersionCommand.get_help_text"
|
|
],
|
|
"modules/commands/webviewer_command.py": [
|
|
"WebViewerCommand",
|
|
"WebViewerCommand.execute",
|
|
"WebViewerCommand.get_help_text",
|
|
"WebViewerCommand.matches_keyword"
|
|
],
|
|
"modules/commands/worldcup_command.py": [
|
|
"WorldCupCommand",
|
|
"WorldCupCommand.execute",
|
|
"WorldCupCommand.get_help_text",
|
|
"WorldCupCommand.matches_keyword"
|
|
],
|
|
"modules/commands/wx_command.py": [
|
|
"WxCommand",
|
|
"WxCommand.abbreviate_alert_title",
|
|
"WxCommand.abbreviate_city_name",
|
|
"WxCommand.abbreviate_noaa",
|
|
"WxCommand.abbreviate_wind_direction",
|
|
"WxCommand.can_execute",
|
|
"WxCommand.city_to_lat_lon",
|
|
"WxCommand.compact_time",
|
|
"WxCommand.execute",
|
|
"WxCommand.extract_dew_point",
|
|
"WxCommand.extract_high_low",
|
|
"WxCommand.extract_humidity",
|
|
"WxCommand.extract_precip_chance",
|
|
"WxCommand.extract_precip_probability",
|
|
"WxCommand.extract_pressure",
|
|
"WxCommand.extract_uv_index",
|
|
"WxCommand.extract_visibility",
|
|
"WxCommand.extract_wind_gusts",
|
|
"WxCommand.format_hourly_forecast",
|
|
"WxCommand.format_multiday_forecast",
|
|
"WxCommand.format_tomorrow_forecast",
|
|
"WxCommand.get_current_conditions",
|
|
"WxCommand.get_help_text",
|
|
"WxCommand.get_noaa_hourly_weather",
|
|
"WxCommand.get_noaa_weather",
|
|
"WxCommand.get_observation_data",
|
|
"WxCommand.get_remaining_cooldown",
|
|
"WxCommand.get_weather_alerts_noaa",
|
|
"WxCommand.get_weather_emoji",
|
|
"WxCommand.get_weather_for_location",
|
|
"WxCommand.get_weather_for_zipcode",
|
|
"WxCommand.matches_keyword",
|
|
"WxCommand.zipcode_to_lat_lon"
|
|
],
|
|
"modules/config_schema.py": [
|
|
"KeyMeta",
|
|
"SectionMeta",
|
|
"canonical_sections_missing_from_example",
|
|
"get_example_sections",
|
|
"is_alert_agency_key",
|
|
"is_announcements_trigger_key",
|
|
"is_bridge_channel_key",
|
|
"is_command_section",
|
|
"is_dynamic_suffix_key",
|
|
"is_known_config_key",
|
|
"is_mqtt_broker_key",
|
|
"is_service_section",
|
|
"load_documented_keys_from_example",
|
|
"validate_config_keys"
|
|
],
|
|
"modules/config_snapshot.py": [
|
|
"config_to_redacted_sections",
|
|
"is_sensitive_key",
|
|
"redacted_sections_to_ini_text"
|
|
],
|
|
"modules/config_validation.py": [
|
|
"strip_optional_quotes",
|
|
"validate_config"
|
|
],
|
|
"modules/core.py": [
|
|
"MeshCoreBot",
|
|
"MeshCoreBot.available_languages",
|
|
"MeshCoreBot.bot_root",
|
|
"MeshCoreBot.connect",
|
|
"MeshCoreBot.create_default_config",
|
|
"MeshCoreBot.disconnect_radio",
|
|
"MeshCoreBot.get_system_health",
|
|
"MeshCoreBot.get_translator",
|
|
"MeshCoreBot.is_radio_offline",
|
|
"MeshCoreBot.is_radio_zombie",
|
|
"MeshCoreBot.is_valid_prefix",
|
|
"MeshCoreBot.keep_running",
|
|
"MeshCoreBot.key_prefix",
|
|
"MeshCoreBot.load_config",
|
|
"MeshCoreBot.radio_session",
|
|
"MeshCoreBot.reboot_radio",
|
|
"MeshCoreBot.reconnect_radio",
|
|
"MeshCoreBot.reload_config",
|
|
"MeshCoreBot.send_startup_advert",
|
|
"MeshCoreBot.set_device_name",
|
|
"MeshCoreBot.set_radio_clock",
|
|
"MeshCoreBot.setup_logging",
|
|
"MeshCoreBot.setup_message_handlers",
|
|
"MeshCoreBot.start",
|
|
"MeshCoreBot.stop",
|
|
"MeshCoreBot.wait_for_contacts"
|
|
],
|
|
"modules/database_restore.py": [
|
|
"DatabaseRestoreError",
|
|
"RestoreResult",
|
|
"apply_pending_database_restore",
|
|
"apply_pending_restores_from_config",
|
|
"pending_restore_path",
|
|
"stage_database_restore",
|
|
"validate_restore_database"
|
|
],
|
|
"modules/db_manager.py": [
|
|
"AsyncDBManager",
|
|
"AsyncDBManager.cache_value",
|
|
"AsyncDBManager.connection",
|
|
"AsyncDBManager.execute_query",
|
|
"AsyncDBManager.execute_update",
|
|
"AsyncDBManager.get_cached_value",
|
|
"AsyncDBManager.get_metadata",
|
|
"AsyncDBManager.set_metadata",
|
|
"DBManager",
|
|
"DBManager.cache_geocoding",
|
|
"DBManager.cache_json",
|
|
"DBManager.cache_value",
|
|
"DBManager.cleanup_expired_cache",
|
|
"DBManager.cleanup_geocoding_cache",
|
|
"DBManager.connection",
|
|
"DBManager.create_table",
|
|
"DBManager.delete_timestamp_rows_in_chunks",
|
|
"DBManager.drop_table",
|
|
"DBManager.execute_query",
|
|
"DBManager.execute_query_on_connection",
|
|
"DBManager.execute_update",
|
|
"DBManager.execute_update_on_connection",
|
|
"DBManager.get_bot_start_time",
|
|
"DBManager.get_cached_geocoding",
|
|
"DBManager.get_cached_json",
|
|
"DBManager.get_cached_value",
|
|
"DBManager.get_connection",
|
|
"DBManager.get_database_stats",
|
|
"DBManager.get_metadata",
|
|
"DBManager.get_system_health",
|
|
"DBManager.set_bot_start_time",
|
|
"DBManager.set_metadata",
|
|
"DBManager.set_system_health",
|
|
"DBManager.vacuum_database"
|
|
],
|
|
"modules/db_migrations.py": [
|
|
"MigrationRunner",
|
|
"MigrationRunner.run"
|
|
],
|
|
"modules/db_retention.py": [
|
|
"delete_timestamp_rows_in_chunks",
|
|
"retention_delete_settings"
|
|
],
|
|
"modules/enums.py": [
|
|
"AdvertFlags",
|
|
"DeviceRole",
|
|
"PayloadType",
|
|
"PayloadVersion",
|
|
"RouteType"
|
|
],
|
|
"modules/feed_filter_eval.py": [
|
|
"evaluate_filter_condition",
|
|
"get_nested_value",
|
|
"item_passes_filter_config",
|
|
"parse_item_field_as_datetime",
|
|
"parse_microsoft_date"
|
|
],
|
|
"modules/feed_format.py": [
|
|
"apply_feed_field_function",
|
|
"clean_feed_html_body",
|
|
"feed_format_auto_base_value",
|
|
"feed_format_auto_slots",
|
|
"format_feed_message",
|
|
"format_relative_timestamp",
|
|
"sort_feed_items",
|
|
"truncate_to_budget"
|
|
],
|
|
"modules/feed_manager.py": [
|
|
"FeedManager",
|
|
"FeedManager.format_message",
|
|
"FeedManager.initialize",
|
|
"FeedManager.poll_all_feeds",
|
|
"FeedManager.poll_feed",
|
|
"FeedManager.process_api_feed",
|
|
"FeedManager.process_message_queue",
|
|
"FeedManager.process_rss_feed",
|
|
"FeedManager.stop"
|
|
],
|
|
"modules/feed_parse.py": [
|
|
"api_item_fields",
|
|
"feed_allow_private_urls",
|
|
"feed_max_parsed_items",
|
|
"feed_max_response_bytes",
|
|
"parse_item_timestamp",
|
|
"rss_entry_published"
|
|
],
|
|
"modules/flood_scope.py": [
|
|
"channel_scope_entry",
|
|
"format_scope_list",
|
|
"is_global_marker",
|
|
"normalize_channel_for_scope",
|
|
"normalize_scope_name",
|
|
"outgoing_override",
|
|
"parse_scope_list",
|
|
"scope_key_hex",
|
|
"section_flood_scope",
|
|
"split_allowlist",
|
|
"validate_device_scope_name",
|
|
"validate_scope_name"
|
|
],
|
|
"modules/graph_trace_helper.py": [
|
|
"update_mesh_graph_from_trace_data"
|
|
],
|
|
"modules/http_retry.py": [
|
|
"make_retry_session"
|
|
],
|
|
"modules/i18n.py": [
|
|
"Translator",
|
|
"Translator.get_available_languages",
|
|
"Translator.get_value",
|
|
"Translator.reload",
|
|
"Translator.translate"
|
|
],
|
|
"modules/ini_writer.py": [
|
|
"IniValueError",
|
|
"backup_config",
|
|
"update_ini_values"
|
|
],
|
|
"modules/joke_text.py": [
|
|
"fetch_fitting_joke",
|
|
"send_joke",
|
|
"split_joke_text"
|
|
],
|
|
"modules/lang_detector.py": [
|
|
"detect_language"
|
|
],
|
|
"modules/location.py": [
|
|
"ResolveOptions",
|
|
"ResolvedLocation",
|
|
"cache_put",
|
|
"city_display_name",
|
|
"classify_location",
|
|
"geocode_city_best_effort",
|
|
"geocode_zipcode_best_effort",
|
|
"get_bot_lat_lon",
|
|
"get_companion_lat_lon",
|
|
"get_config_default_lat_lon",
|
|
"get_neighborhood_queries",
|
|
"join_location",
|
|
"lookup_repeater_lat_lon",
|
|
"parse_coordinates",
|
|
"parse_coordinates_detailed",
|
|
"resolve_location",
|
|
"resolve_location_async",
|
|
"resolve_with_message_fallbacks",
|
|
"reverse_geocode_region",
|
|
"titlecase_location",
|
|
"zip_to_city_string"
|
|
],
|
|
"modules/logging_setup.py": [
|
|
"JsonFormatter",
|
|
"JsonFormatter.format",
|
|
"configure_bot_logging",
|
|
"configure_meshcore_loggers",
|
|
"meshcore_log_level"
|
|
],
|
|
"modules/maintenance.py": [
|
|
"MaintenanceRunner",
|
|
"MaintenanceRunner.apply_log_rotation_config",
|
|
"MaintenanceRunner.collect_email_stats",
|
|
"MaintenanceRunner.format_email_body",
|
|
"MaintenanceRunner.get_maint",
|
|
"MaintenanceRunner.get_notif",
|
|
"MaintenanceRunner.last_retention_stats",
|
|
"MaintenanceRunner.maybe_run_db_backup",
|
|
"MaintenanceRunner.run_data_retention",
|
|
"MaintenanceRunner.run_db_backup",
|
|
"MaintenanceRunner.send_nightly_email",
|
|
"SmtpSettings",
|
|
"SmtpSettings.from_header",
|
|
"read_smtp_settings",
|
|
"send_smtp_message"
|
|
],
|
|
"modules/mesh_graph.py": [
|
|
"MeshGraph",
|
|
"MeshGraph.add_edge",
|
|
"MeshGraph.delete_expired_edges_from_db",
|
|
"MeshGraph.find_intermediate_nodes",
|
|
"MeshGraph.get_candidate_score",
|
|
"MeshGraph.get_edge",
|
|
"MeshGraph.get_incoming_edges",
|
|
"MeshGraph.get_outgoing_edges",
|
|
"MeshGraph.has_edge",
|
|
"MeshGraph.prune_expired_edges",
|
|
"MeshGraph.shutdown",
|
|
"MeshGraph.validate_path",
|
|
"MeshGraph.validate_path_segment"
|
|
],
|
|
"modules/meshcore_payload_decode.py": [
|
|
"ChannelKeyStore",
|
|
"ChannelKeyStore.add_hashtag",
|
|
"ChannelKeyStore.add_hex",
|
|
"ChannelKeyStore.add_secret",
|
|
"ChannelKeyStore.has",
|
|
"ChannelKeyStore.keys_for",
|
|
"channel_hash_for_key",
|
|
"decode_group_text",
|
|
"decode_payload",
|
|
"decrypt_group_text",
|
|
"derive_hashtag_key",
|
|
"parse_advert"
|
|
],
|
|
"modules/message_handler.py": [
|
|
"MessageHandler",
|
|
"MessageHandler.cleanup_old_messages",
|
|
"MessageHandler.correlate_message_with_rf_data",
|
|
"MessageHandler.decode_meshcore_packet",
|
|
"MessageHandler.discover_message_path",
|
|
"MessageHandler.extract_path_from_raw_hex",
|
|
"MessageHandler.find_recent_rf_data",
|
|
"MessageHandler.get_payload_type_name",
|
|
"MessageHandler.handle_channel_message",
|
|
"MessageHandler.handle_contact_message",
|
|
"MessageHandler.handle_new_contact",
|
|
"MessageHandler.handle_raw_data",
|
|
"MessageHandler.handle_rf_log_data",
|
|
"MessageHandler.parse_advert",
|
|
"MessageHandler.process_message",
|
|
"MessageHandler.should_process_message",
|
|
"MessageHandler.store_message_for_correlation",
|
|
"MessageHandler.try_correlate_pending_messages",
|
|
"PendingMessageEntry"
|
|
],
|
|
"modules/models.py": [
|
|
"MeshMessage",
|
|
"MeshMessage.effective_outgoing_flood_scope",
|
|
"MeshMessage.is_global_flood_scope",
|
|
"channel_body_limit",
|
|
"self_info_name"
|
|
],
|
|
"modules/neighbors_discovery.py": [
|
|
"NeighborEntry",
|
|
"NeighborEntry.heard_secs_ago",
|
|
"NeighborsConfig",
|
|
"NeighborsConfig.cycle_budget",
|
|
"NeighborsConfig.interval_seconds",
|
|
"NeighborsConfig.scope_request_budget",
|
|
"build_neighbors_message",
|
|
"clamp_interval_hours",
|
|
"collect_scopes",
|
|
"discover_neighbors",
|
|
"fetch_self_scopes",
|
|
"record_neighbors",
|
|
"sort_entries",
|
|
"sort_key",
|
|
"upsert_zero_hop_observed_path",
|
|
"upsert_zero_hop_observed_path_via_manager"
|
|
],
|
|
"modules/nws_alerts.py": [
|
|
"SpecialStatementRules",
|
|
"entry_nws_headline",
|
|
"entry_summary",
|
|
"entry_title",
|
|
"node_value",
|
|
"parse_alert_fields",
|
|
"service_special_headline_event",
|
|
"wx_special_headline_event"
|
|
],
|
|
"modules/packet_decode.py": [
|
|
"decode_meshcore_packet",
|
|
"format_path_string",
|
|
"path_bytes_to_nodes",
|
|
"payload_type_name",
|
|
"process_packet_path",
|
|
"route_type_name",
|
|
"split_path_hex"
|
|
],
|
|
"modules/path_inference.py": [
|
|
"NodeSelection",
|
|
"PathInferenceConfig",
|
|
"PathInferenceConfig.from_config",
|
|
"apply_tie_breakers",
|
|
"calculate_recency_weighted_scores",
|
|
"decode_path_nodes",
|
|
"get_node_location",
|
|
"select_by_dual_proximity",
|
|
"select_by_path_proximity",
|
|
"select_by_simple_proximity",
|
|
"select_by_single_proximity",
|
|
"select_geographic",
|
|
"select_node_repeater",
|
|
"select_repeater_by_graph"
|
|
],
|
|
"modules/plugin_loader.py": [
|
|
"PluginLoader",
|
|
"PluginLoader.discover_alternative_plugins",
|
|
"PluginLoader.discover_local_plugins",
|
|
"PluginLoader.discover_plugins",
|
|
"PluginLoader.get_all_plugins",
|
|
"PluginLoader.get_failed_plugins",
|
|
"PluginLoader.get_plugin_by_keyword",
|
|
"PluginLoader.get_plugin_by_name",
|
|
"PluginLoader.get_plugin_metadata",
|
|
"PluginLoader.get_plugins_by_category",
|
|
"PluginLoader.load_all_plugins",
|
|
"PluginLoader.load_plugin",
|
|
"PluginLoader.load_plugin_from_path",
|
|
"PluginLoader.reload_plugin",
|
|
"PluginLoader.validate_plugin"
|
|
],
|
|
"modules/profanity_filter.py": [
|
|
"censor",
|
|
"contains_profanity"
|
|
],
|
|
"modules/rate_limiter.py": [
|
|
"BotTxRateLimiter",
|
|
"BotTxRateLimiter.can_tx",
|
|
"BotTxRateLimiter.last_tx",
|
|
"BotTxRateLimiter.record_tx",
|
|
"BotTxRateLimiter.time_until_next_tx",
|
|
"BotTxRateLimiter.wait_for_tx",
|
|
"ChannelRateLimiter",
|
|
"ChannelRateLimiter.can_send",
|
|
"ChannelRateLimiter.channels",
|
|
"ChannelRateLimiter.get_stats",
|
|
"ChannelRateLimiter.record_send",
|
|
"ChannelRateLimiter.time_until_next",
|
|
"NominatimRateLimiter",
|
|
"NominatimRateLimiter.can_request",
|
|
"NominatimRateLimiter.get_stats",
|
|
"NominatimRateLimiter.record_request",
|
|
"NominatimRateLimiter.time_until_next",
|
|
"NominatimRateLimiter.wait_and_request",
|
|
"NominatimRateLimiter.wait_and_request_sync",
|
|
"NominatimRateLimiter.wait_for_request",
|
|
"NominatimRateLimiter.wait_for_request_sync",
|
|
"PerUserRateLimiter",
|
|
"PerUserRateLimiter.can_send",
|
|
"PerUserRateLimiter.record_send",
|
|
"PerUserRateLimiter.time_until_next",
|
|
"RateLimiter"
|
|
],
|
|
"modules/region_capitals.py": [
|
|
"region_capital_query"
|
|
],
|
|
"modules/region_warning.py": [
|
|
"RegionWarningMonitor",
|
|
"RegionWarningMonitor.observe",
|
|
"RegionWarningMonitor.reload_config",
|
|
"RegionWarningSettings",
|
|
"RegionWarningSettings.monitors_channel",
|
|
"daily_series",
|
|
"load_settings",
|
|
"local_now",
|
|
"normalize_channel",
|
|
"read_withheld",
|
|
"recent_events",
|
|
"render_message",
|
|
"settings_to_config_values",
|
|
"traffic_summary",
|
|
"warning_budget"
|
|
],
|
|
"modules/repeater_manager.py": [
|
|
"RepeaterManager",
|
|
"RepeaterManager.add_companion_from_contact_data",
|
|
"RepeaterManager.add_discovered_contact",
|
|
"RepeaterManager.apply_device_mode_firmware_preferences",
|
|
"RepeaterManager.cache_geocoding",
|
|
"RepeaterManager.check_and_auto_purge",
|
|
"RepeaterManager.cleanup_database",
|
|
"RepeaterManager.cleanup_geocoding_cache",
|
|
"RepeaterManager.cleanup_repeater_retention",
|
|
"RepeaterManager.discover_companion_contacts",
|
|
"RepeaterManager.get_auto_purge_status",
|
|
"RepeaterManager.get_bot_devices",
|
|
"RepeaterManager.get_cached_geocoding",
|
|
"RepeaterManager.get_companion_contacts",
|
|
"RepeaterManager.get_complete_contact_database",
|
|
"RepeaterManager.get_contact_list_status",
|
|
"RepeaterManager.get_contact_statistics",
|
|
"RepeaterManager.get_contacts_by_role",
|
|
"RepeaterManager.get_daily_advertisement_stats",
|
|
"RepeaterManager.get_gateway_devices",
|
|
"RepeaterManager.get_nodes_per_day_stats",
|
|
"RepeaterManager.get_purging_stats",
|
|
"RepeaterManager.get_repeater_contacts",
|
|
"RepeaterManager.get_repeater_devices",
|
|
"RepeaterManager.get_sensor_devices",
|
|
"RepeaterManager.get_tracked_contact_row",
|
|
"RepeaterManager.is_contact_on_device",
|
|
"RepeaterManager.log_purging_action",
|
|
"RepeaterManager.manage_contact_list",
|
|
"RepeaterManager.periodic_contact_monitoring",
|
|
"RepeaterManager.populate_missing_geolocation_data",
|
|
"RepeaterManager.purge_companion_from_contacts",
|
|
"RepeaterManager.purge_old_repeaters",
|
|
"RepeaterManager.purge_repeater_by_contact_key",
|
|
"RepeaterManager.purge_repeater_from_contacts",
|
|
"RepeaterManager.restore_repeater",
|
|
"RepeaterManager.scan_and_catalog_repeaters",
|
|
"RepeaterManager.sync_device_mode_favourites_pass1",
|
|
"RepeaterManager.sync_device_mode_favourites_pass2",
|
|
"RepeaterManager.test_meshcore_cli_commands",
|
|
"RepeaterManager.test_purge_system",
|
|
"RepeaterManager.toggle_auto_add",
|
|
"RepeaterManager.track_contact_advertisement",
|
|
"TrackAdvertResult",
|
|
"collect_protected_pubkeys_for_device_mode",
|
|
"validate_repeater_tables"
|
|
],
|
|
"modules/response_template.py": [
|
|
"format_piped_template",
|
|
"format_piped_template_async"
|
|
],
|
|
"modules/rf_match.py": [
|
|
"rf_data_is_correlated"
|
|
],
|
|
"modules/scheduled_message_admin.py": [
|
|
"compose_value",
|
|
"describe_schedule",
|
|
"next_run_times",
|
|
"read_entries",
|
|
"validate_entry"
|
|
],
|
|
"modules/scheduled_message_cron.py": [
|
|
"ScheduleParseResult",
|
|
"is_valid_legacy_hhmm",
|
|
"parse_schedule_key",
|
|
"parse_scheduled_message_value"
|
|
],
|
|
"modules/scheduler.py": [
|
|
"MessageScheduler",
|
|
"MessageScheduler.check_interval_advertising",
|
|
"MessageScheduler.get_current_time",
|
|
"MessageScheduler.join",
|
|
"MessageScheduler.run_db_backup",
|
|
"MessageScheduler.run_scheduler",
|
|
"MessageScheduler.send_interval_advert",
|
|
"MessageScheduler.send_radio_offline_alert_email",
|
|
"MessageScheduler.send_scheduled_message",
|
|
"MessageScheduler.send_zombie_alert_email",
|
|
"MessageScheduler.setup_interval_advertising",
|
|
"MessageScheduler.setup_scheduled_messages",
|
|
"MessageScheduler.start"
|
|
],
|
|
"modules/scope_gate.py": [
|
|
"classify_channel_flood_scope",
|
|
"effective_route_type_int",
|
|
"grp_txt_payload_type_int",
|
|
"is_confirmed_global_flood",
|
|
"is_rf_data_scope_eligible",
|
|
"match_scope",
|
|
"resolve_reply_scope_from_rf_data",
|
|
"scope_fields_from_packet_info"
|
|
],
|
|
"modules/security_utils.py": [
|
|
"SafeAiohttpResolver",
|
|
"SafeAiohttpResolver.close",
|
|
"SafeAiohttpResolver.resolve",
|
|
"SafeRequestsAdapter",
|
|
"SafeRequestsAdapter.init_poolmanager",
|
|
"SafeUrlPolicy",
|
|
"SafeUrlPolicy.parse",
|
|
"SafeUrlPolicy.resolve",
|
|
"SafeUrlPolicy.validate",
|
|
"SafeUrlPolicy.validate_async",
|
|
"SafeUrlPolicy.validate_records",
|
|
"UnsafeUrlError",
|
|
"create_safe_requests_session",
|
|
"safe_aiohttp_request",
|
|
"safe_requests_request",
|
|
"sanitize_input",
|
|
"sanitize_name",
|
|
"validate_api_key_format",
|
|
"validate_external_url",
|
|
"validate_integer_range",
|
|
"validate_port_number",
|
|
"validate_pubkey_format",
|
|
"validate_safe_path",
|
|
"validate_sql_identifier"
|
|
],
|
|
"modules/service_plugin_loader.py": [
|
|
"ServicePluginLoader",
|
|
"ServicePluginLoader.discover_local_services",
|
|
"ServicePluginLoader.discover_services",
|
|
"ServicePluginLoader.get_all_services",
|
|
"ServicePluginLoader.get_service_by_name",
|
|
"ServicePluginLoader.get_service_metadata",
|
|
"ServicePluginLoader.load_all_services",
|
|
"ServicePluginLoader.load_service",
|
|
"ServicePluginLoader.load_service_from_path",
|
|
"ServicePluginLoader.validate_service"
|
|
],
|
|
"modules/service_plugins/base_service.py": [
|
|
"BaseServicePlugin",
|
|
"BaseServicePlugin.get_mesh_flood_scope",
|
|
"BaseServicePlugin.get_metadata",
|
|
"BaseServicePlugin.has_external_notification_targets",
|
|
"BaseServicePlugin.is_healthy",
|
|
"BaseServicePlugin.is_running",
|
|
"BaseServicePlugin.on_transport_reconnected",
|
|
"BaseServicePlugin.send_external_notifications",
|
|
"BaseServicePlugin.start",
|
|
"BaseServicePlugin.stop",
|
|
"ExternalNotifySettings"
|
|
],
|
|
"modules/service_plugins/darc_mowas_service.py": [
|
|
"DARC_MoWaS_Service",
|
|
"DARC_MoWaS_Service.chunk_message",
|
|
"DARC_MoWaS_Service.make_cb_message",
|
|
"DARC_MoWaS_Service.scope_by_region",
|
|
"DARC_MoWaS_Service.start",
|
|
"DARC_MoWaS_Service.stop",
|
|
"TRDECapAlert",
|
|
"TRDECapAlert.from_xml",
|
|
"TRDECapAlertArea",
|
|
"TRDECapAlertArea.from_xml",
|
|
"TRDECapAlertInfo",
|
|
"TRDECapAlertInfo.from_xml",
|
|
"TRDECapAlertInfo.region_id"
|
|
],
|
|
"modules/service_plugins/discord_bridge_service.py": [
|
|
"DiscordBridgeService",
|
|
"DiscordBridgeService.on_transport_reconnected",
|
|
"DiscordBridgeService.start",
|
|
"DiscordBridgeService.stop",
|
|
"QueuedMessage"
|
|
],
|
|
"modules/service_plugins/earthquake_service.py": [
|
|
"EarthquakeService",
|
|
"EarthquakeService.start",
|
|
"EarthquakeService.stop"
|
|
],
|
|
"modules/service_plugins/map_uploader_service.py": [
|
|
"MapUploaderService",
|
|
"MapUploaderService.meshcore",
|
|
"MapUploaderService.on_transport_reconnected",
|
|
"MapUploaderService.start",
|
|
"MapUploaderService.stop"
|
|
],
|
|
"modules/service_plugins/mqtt_weather_service.py": [
|
|
"MqttWeatherService",
|
|
"MqttWeatherService.start",
|
|
"MqttWeatherService.stop"
|
|
],
|
|
"modules/service_plugins/packet_capture_service.py": [
|
|
"PacketCaptureService",
|
|
"PacketCaptureService.claim_neighbors_cycle",
|
|
"PacketCaptureService.cleanup_event_subscriptions",
|
|
"PacketCaptureService.connect_mqtt_brokers",
|
|
"PacketCaptureService.decode_packet",
|
|
"PacketCaptureService.get_config_bool",
|
|
"PacketCaptureService.get_config_float",
|
|
"PacketCaptureService.get_config_int",
|
|
"PacketCaptureService.get_config_str",
|
|
"PacketCaptureService.get_firmware_info",
|
|
"PacketCaptureService.handle_raw_data",
|
|
"PacketCaptureService.handle_rx_log_data",
|
|
"PacketCaptureService.health_check_loop",
|
|
"PacketCaptureService.is_healthy",
|
|
"PacketCaptureService.jwt_renewal_scheduler_for_client",
|
|
"PacketCaptureService.meshcore",
|
|
"PacketCaptureService.mqtt_reconnection_monitor",
|
|
"PacketCaptureService.neighbors_brokers",
|
|
"PacketCaptureService.neighbors_commands_available",
|
|
"PacketCaptureService.neighbors_cooldown_remaining",
|
|
"PacketCaptureService.neighbors_scheduler",
|
|
"PacketCaptureService.on_transport_reconnected",
|
|
"PacketCaptureService.process_packet",
|
|
"PacketCaptureService.publish_neighbors_mqtt",
|
|
"PacketCaptureService.publish_packet_mqtt",
|
|
"PacketCaptureService.publish_status",
|
|
"PacketCaptureService.refresh_stats",
|
|
"PacketCaptureService.release_neighbors_cycle",
|
|
"PacketCaptureService.run_neighbors_cycle",
|
|
"PacketCaptureService.setup_event_handlers",
|
|
"PacketCaptureService.start",
|
|
"PacketCaptureService.start_background_tasks",
|
|
"PacketCaptureService.stats_commands_available",
|
|
"PacketCaptureService.stats_refresh_scheduler",
|
|
"PacketCaptureService.stop"
|
|
],
|
|
"modules/service_plugins/packet_capture_utils.py": [
|
|
"base64url_decode",
|
|
"base64url_encode",
|
|
"bytes_to_hex",
|
|
"bytes_to_int_le",
|
|
"create_auth_token",
|
|
"create_auth_token_async",
|
|
"ed25519_sign_with_expanded_key",
|
|
"hex_to_bytes",
|
|
"int_to_bytes_le",
|
|
"read_private_key_file"
|
|
],
|
|
"modules/service_plugins/repeater_prefix_collision_service.py": [
|
|
"RepeaterPrefixCollisionService",
|
|
"RepeaterPrefixCollisionService.on_transport_reconnected",
|
|
"RepeaterPrefixCollisionService.start",
|
|
"RepeaterPrefixCollisionService.stop"
|
|
],
|
|
"modules/service_plugins/telegram_bridge_service.py": [
|
|
"QueuedMessage",
|
|
"TelegramBridgeService",
|
|
"TelegramBridgeService.on_transport_reconnected",
|
|
"TelegramBridgeService.start",
|
|
"TelegramBridgeService.stop"
|
|
],
|
|
"modules/service_plugins/weather_service.py": [
|
|
"ForecastFetchResult",
|
|
"WeatherService",
|
|
"WeatherService.start",
|
|
"WeatherService.stop"
|
|
],
|
|
"modules/service_plugins/webhook_service.py": [
|
|
"WebhookService",
|
|
"WebhookService.start",
|
|
"WebhookService.stop"
|
|
],
|
|
"modules/service_plugins/worldcup_service.py": [
|
|
"WorldCupLiveService",
|
|
"WorldCupLiveService.start",
|
|
"WorldCupLiveService.stop"
|
|
],
|
|
"modules/settings_schema.py": [
|
|
"build_plugin_settings_view",
|
|
"command_section_name",
|
|
"read_enabled",
|
|
"read_section_items",
|
|
"service_section_name",
|
|
"to_config_string",
|
|
"validate_field"
|
|
],
|
|
"modules/settings_store.py": [
|
|
"ConfigIniStore",
|
|
"ConfigIniStore.get_value",
|
|
"ConfigIniStore.read_section",
|
|
"ConfigIniStore.section_exists",
|
|
"ConfigIniStore.write_sections",
|
|
"ConfigIniStore.write_values",
|
|
"DatabaseStore",
|
|
"DatabaseStore.get_value",
|
|
"DatabaseStore.read_section",
|
|
"DatabaseStore.section_exists",
|
|
"DatabaseStore.write_sections",
|
|
"DatabaseStore.write_values",
|
|
"SettingsStore",
|
|
"SettingsStore.get_value",
|
|
"SettingsStore.read_section",
|
|
"SettingsStore.section_exists",
|
|
"SettingsStore.write_sections",
|
|
"SettingsStore.write_values",
|
|
"get_settings_store"
|
|
],
|
|
"modules/solar_conditions.py": [
|
|
"drap_xray_conditions",
|
|
"get_config_value",
|
|
"get_moon",
|
|
"get_next_satellite_pass",
|
|
"get_sun",
|
|
"hf_band_conditions",
|
|
"hf_band_conditions_condensed",
|
|
"set_config",
|
|
"solar_conditions",
|
|
"solar_conditions_condensed"
|
|
],
|
|
"modules/trace_runner.py": [
|
|
"RunTraceResult",
|
|
"run_trace"
|
|
],
|
|
"modules/transmission_tracker.py": [
|
|
"TransmissionRecord",
|
|
"TransmissionTracker",
|
|
"TransmissionTracker.cleanup_old_records",
|
|
"TransmissionTracker.extract_repeater_prefixes_from_path",
|
|
"TransmissionTracker.get_repeat_info",
|
|
"TransmissionTracker.match_packet_hash",
|
|
"TransmissionTracker.record_repeat",
|
|
"TransmissionTracker.record_transmission"
|
|
],
|
|
"modules/url_shortener.py": [
|
|
"shorten_url",
|
|
"shorten_url_sync"
|
|
],
|
|
"modules/utils.py": [
|
|
"abbreviate_location",
|
|
"bytes_per_hop_from_routing_and_nodes",
|
|
"calculate_distance",
|
|
"calculate_packet_hash",
|
|
"calculate_path_distances",
|
|
"check_internet_connectivity",
|
|
"check_internet_connectivity_async",
|
|
"decode_escape_sequences",
|
|
"decode_path_len_byte",
|
|
"encode_path_len_byte",
|
|
"espn_dates_for_local_day",
|
|
"extract_path_node_ids_from_message",
|
|
"filter_events_local_day",
|
|
"format_elapsed_display",
|
|
"format_keyword_response_with_placeholders",
|
|
"format_location_for_display",
|
|
"format_temperature_high_low",
|
|
"geocode_city",
|
|
"geocode_city_sync",
|
|
"geocode_zipcode",
|
|
"geocode_zipcode_sync",
|
|
"get_config_timezone",
|
|
"get_major_city_queries",
|
|
"get_nominatim_geocoder",
|
|
"get_packet_hash_placeholder",
|
|
"is_country_name",
|
|
"is_us_state",
|
|
"is_valid_timezone",
|
|
"message_hop_count",
|
|
"message_path_bytes_per_hop",
|
|
"node_ids_from_path_string",
|
|
"normalize_country_name",
|
|
"normalize_us_state",
|
|
"parse_location_string",
|
|
"parse_path_string",
|
|
"parse_trace_payload_route_hashes",
|
|
"public_key_has_prefix",
|
|
"rate_limited_nominatim_geocode",
|
|
"rate_limited_nominatim_geocode_sync",
|
|
"rate_limited_nominatim_reverse",
|
|
"rate_limited_nominatim_reverse_sync",
|
|
"resolve_path",
|
|
"truncate_string",
|
|
"truncate_to_bytes",
|
|
"verify_meshcore_advert_ed25519"
|
|
],
|
|
"modules/version_info.py": [
|
|
"get_application_root",
|
|
"resolve_application_version",
|
|
"resolve_runtime_version"
|
|
],
|
|
"modules/weather_common.py": [
|
|
"WeatherCommandMixin",
|
|
"load_open_meteo_model"
|
|
],
|
|
"modules/web_viewer/app.py": [
|
|
"BotDataViewer",
|
|
"BotDataViewer.run",
|
|
"NeighborEvidenceKeys",
|
|
"main"
|
|
],
|
|
"modules/web_viewer/config_panels.py": [
|
|
"ConfigPanel"
|
|
],
|
|
"modules/web_viewer/dashboard_stats.py": [
|
|
"DashboardStatsService",
|
|
"DashboardStatsService.backfill_packet_dims",
|
|
"DashboardStatsService.backfill_zero_hop_from_packet_stream",
|
|
"DashboardStatsService.build_snapshot",
|
|
"DashboardStatsService.compute_day",
|
|
"DashboardStatsService.derive_windows",
|
|
"DashboardStatsService.detect_sources",
|
|
"DashboardStatsService.has_history",
|
|
"DashboardStatsService.packet_coverage",
|
|
"DashboardStatsService.plan_backfill",
|
|
"DashboardStatsService.prune_history",
|
|
"DashboardStatsService.read_series",
|
|
"DashboardStatsService.read_summary",
|
|
"DashboardStatsService.read_top",
|
|
"DashboardStatsService.refresh",
|
|
"DashboardStatsService.try_claim_lease",
|
|
"DashboardStatsService.upsert_day",
|
|
"DashboardStatsService.write_backfill",
|
|
"day_bounds",
|
|
"humanize_span",
|
|
"local_date_str",
|
|
"normalize_role",
|
|
"packet_share_metric"
|
|
],
|
|
"modules/web_viewer/integration.py": [
|
|
"BotIntegration",
|
|
"BotIntegration.capture_channel_message",
|
|
"BotIntegration.capture_command",
|
|
"BotIntegration.capture_full_packet_data",
|
|
"BotIntegration.capture_packet_routing",
|
|
"BotIntegration.cleanup_old_data",
|
|
"BotIntegration.reset_circuit_breaker",
|
|
"BotIntegration.send_mesh_edge_update",
|
|
"BotIntegration.send_mesh_node_update",
|
|
"BotIntegration.shutdown",
|
|
"WebViewerIntegration",
|
|
"WebViewerIntegration.get_status",
|
|
"WebViewerIntegration.is_viewer_healthy",
|
|
"WebViewerIntegration.restart_viewer",
|
|
"WebViewerIntegration.start_viewer",
|
|
"WebViewerIntegration.stop_viewer",
|
|
"normalized_web_viewer_password"
|
|
]
|
|
}
|