diff --git a/README.md b/README.md
index 6e800ca0..01e2a2dc 100644
--- a/README.md
+++ b/README.md
@@ -242,6 +242,11 @@ Environment variables are loaded from a `.env` file and validated using `pydanti
- **SYNC_MEETINGS** - Interval in seconds to generate ``meetings`` information using an `ics` URL.
- **SYNC_EVENTS** - Interval in seconds to generate ``events`` information using `calendar` or `outlook` application.
+**Scheduled Weather Alert**
+- **WEATHER_ALERT** - Time (in 24h `HH:MM` format) when the weather alert should be fired - Example: `09:00`
+> Alerts in SMS and Email if temperature is higher than 100 or lower than 36 or severe weather warnings.
+> This feature can also be enabled from `automation.yaml` by using the keyword `weather` in phrase for the `task`
+
**[Wi-Fi Controls](https://github.com/thevickypedia/pywifi-controls)**
- **WIFI_SSID** - SSID of the wireless connection.
- **WIFI_PASSWORD** - Password for the wireless connection.
@@ -284,7 +289,7 @@ Environment variables are loaded from a `.env` file and validated using `pydanti
-v /etc/ssl/certs:/etc/ssl/certs \
-w "${PWD}" \
--user "$(id -u):$(id -g)" \
- rhasspy/larynx
+ thevickypedia/speech-synthesis
```
:bulb: Speech Synthesis can run on a docker container for better voices but, response might be negligibly slower. If you don't have docker installed or simply don't want to use it, set the `SPEECH_SYNTHESIS_TIMEOUT` env var to 0. This is also done automatically if failed to launch a docker container upon startup.
diff --git a/docs/README.html b/docs/README.html
index b36a9474..61ae2964 100644
--- a/docs/README.html
+++ b/docs/README.html
@@ -286,6 +286,14 @@
ics
URL.
SYNC_EVENTS - Interval in seconds to generate events
information using calendar
or outlook
application.
Scheduled Weather Alert
+WEATHER_ALERT - Time (in 24h HH:MM
format) when the weather alert should be fired - Example: 09:00
+Alerts in SMS and Email if temperature is higher than 100 or lower than 36 or severe weather warnings.
+
+This feature can also be enabled fromautomation.yaml
by using the keywordweather
in phrase for thetask
WIFI_SSID - SSID of the wireless connection.
:bulb: Speech Synthesis can run on a docker container for better voices but, response might be negligibly slower. If you don’t have docker installed or simply don’t want to use it, set the SPEECH_SYNTHESIS_TIMEOUT
env var to 0. This is also done automatically if failed to launch a docker container upon startup.
Processes responses for 200 messages. Response is framed as synthesized or native based on input data.
+response – Takes the response as text.
input_data – Input data modal.
FileResponse in case of native audio or bytes in case of speech synthesized response.
+Union[bytes, FileResponse]
+See also
speech_synthesizer: Initiates larynx docker image for speech synthesis.
speech_synthesizer: Initiates docker container for speech synthesis.
telegram_api: Initiates message polling for Telegram bot to execute offline commands.
fast_api: Initiates uvicorn server to process offline commands, stock monitor and robinhood report generation.
background_tasks: Initiates internal background tasks, cron jobs, alarms, reminders, events and meetings sync.
Says weather at any location if a specific location is mentioned.
Says weather at current location by getting IP using reverse geocoding if no place is received.
phrase – Takes the phrase spoken as an argument.
+phrase – Takes the phrase spoken as an argument.
monitor – Takes a boolean value to simply return the weather response.
Weather monitoring system to trigger notifications for high, low weather and severe weather alert.
+Makes a post call to docker container for speech synthesis.
text – Takes the text that has to be spoken as an argument.
run – Takes a boolean flag to choose whether to run the audio_driver.say
loop.
block – Takes a boolean flag to wait other tasks while speaking. [Applies only for larynx running on docker]
block – Takes a boolean flag to await other tasks while speaking. [Applies only for speech-synthesis on docker]
Validates date value to be in DD-MM format.
+Custom SegmentationError
raised when the code exits with SIGSEGV.
>>> SegmentationError
+
HTML templates used for hosting endpoints.
->>> OriginTemplates
+>>> EndpointTemplates
@@ -9383,18 +9438,18 @@ Telegram
alias of EmailTemplates
-
--
-jarvis.modules.templates.templates.origin¶
-alias of OriginTemplates
-
-
-
jarvis.modules.templates.templates.generic¶
alias of GenericTemplates
+
+-
+jarvis.modules.templates.templates.endpoint¶
+alias of EndpointTemplates
+
+
Timeout¶
diff --git a/docs/objects.inv b/docs/objects.inv
index 42ddc7a1..f78f15de 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/py-modindex.html b/docs/py-modindex.html
index 243abb02..63d40682 100644
--- a/docs/py-modindex.html
+++ b/docs/py-modindex.html
@@ -363,6 +363,11 @@ Python Module Index
jarvis.executors.weather
+
+
+
+ jarvis.executors.weather_monitor
+
diff --git a/docs/searchindex.js b/docs/searchindex.js
index 8e3934c5..affdf280 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["README", "index"], "filenames": ["README.md", "index.rst"], "titles": ["Kick off", "Welcome to Jarvis\u2019s documentation!"], "terms": {"fulli": [0, 1], "function": 0, "voic": [0, 1], "base": [0, 1], "natur": 0, "languag": [0, 1], "ui": [0, 1], "platform": 0, "support": 0, "stat": 0, "repo": 0, "deploy": 0, "activ": [0, 1], "develop": [0, 1], "mainten": 0, "reach": 0, "out": [0, 1], "instal": [0, 1], "python": [0, 1], "m": [0, 1], "pip": 0, "jarvi": 0, "ironman": 0, "initi": [0, 1], "import": [0, 1], "__name__": 0, "__main__": 0, "start": [0, 1], "maco": [0, 1], "high": [0, 1], "sierra": 0, "mojav": 0, "catalina": 0, "big": 0, "sur": 0, "monterei": 0, "ventura": [0, 1], "system": 0, "prefer": [0, 1], "secur": [0, 1], "privaci": [0, 1], "click": 0, "sign": [0, 1], "add": [0, 1], "id": [0, 1], "termin": [0, 1], "follow": [0, 1], "section": 0, "left": 0, "pane": 0, "microphon": 0, "requir": [0, 1], "listen": 0, "respond": [0, 1], "access": [0, 1], "us": [0, 1], "kei": [0, 1], "combin": 0, "bright": [0, 1], "volum": 0, "control": 0, "camera": 0, "onli": [0, 1], "dure": [0, 1], "face": 0, "recognit": [0, 1], "detect": [0, 1], "event": [0, 1], "other": 0, "app": [0, 1], "like": [0, 1], "outlook": [0, 1], "calendar": [0, 1], "file": 0, "folder": [0, 1], "OR": 0, "full": [0, 1], "disk": 0, "all": [0, 1], "fileio": 0, "oper": [0, 1], "linux": [0, 1], "ubuntu": [0, 1], "22": [0, 1], "04": 0, "lt": 0, "store": [0, 1], "host": [0, 1], "machin": [0, 1], "": 0, "password": [0, 1], "var": [0, 1], "root_password": [0, 1], "unlik": 0, "window": [0, 1], "doe": [0, 1], "have": [0, 1], "specif": [0, 1], "permiss": [0, 1], "10": [0, 1], "set": 0, "pop": 0, "confirm": [0, 1], "allow": [0, 1], "deni": 0, "anaconda": 0, "miniconda": 0, "visualstudio": 0, "c": 0, "buildtool": 0, "git": 0, "make": [0, 1], "sure": 0, "build": [0, 1], "tool": 0, "ar": [0, 1], "complet": [0, 1], "restart": [0, 1], "script": [0, 1], "locat": 0, "path": [0, 1], "environ": [0, 1], "from": [0, 1], "modul": 0, "cam_object": 0, "print": [0, 1], "get_index": [0, 1], "get": [0, 1], "index": [0, 1], "each": [0, 1], "list_camera": [0, 1], "list": [0, 1], "connect": 0, "text": 0, "speech": 0, "speaker": [0, 1], "speak": [0, 1], "speak_object": 0, "run": [0, 1], "get_all_voic": [0, 1], "asyncio": [0, 1], "recogn": [0, 1], "main": 0, "load": [0, 1], "valid": [0, 1], "pydant": [0, 1], "more": [0, 1], "root": [0, 1], "_": 0, "vital": [0, 1], "sudo": 0, "command": 0, "mandatori": 0, "name": [0, 1], "which": [0, 1], "should": [0, 1], "address": [0, 1], "user": [0, 1], "default": [0, 1], "vignesh": [0, 1], "titl": [0, 1], "sir": [0, 1], "plot": [0, 1], "mic": 0, "boolean": [0, 1], "valu": [0, 1], "whether": [0, 1], "show": [0, 1], "usag": 0, "realtim": 0, "true": [0, 1], "log": [0, 1], "retent": [0, 1], "number": [0, 1], "dai": [0, 1], "wake": [0, 1], "word": 0, "alexa": 0, "legaci": [0, 1], "warn": [0, 1], "ha": [0, 1], "limit": [0, 1], "reli": [0, 1], "ml": 0, "librari": [0, 1], "operatingsystem": 0, "author": [0, 1], "favorit": 0, "rate": [0, 1], "speed": [0, 1], "spoken": [0, 1], "pyttsx3": 0, "typic": [0, 1], "200": [0, 1], "To": 0, "content": [0, 1], "manag": [0, 1], "time": [0, 1], "sensit": [0, 1], "hot": [0, 1], "rang": [0, 1], "0": [0, 1], "1": [0, 1], "5": [0, 1], "timeout": 0, "second": [0, 1], "until": [0, 1], "wait": [0, 1], "3": [0, 1], "phrase": [0, 1], "remain": 0, "none": [0, 1], "flag": [0, 1], "version": [0, 1], "skip": 0, "process": [0, 1], "fals": [0, 1], "enforc": 0, "cpu": 0, "core": [0, 1], "debug": [0, 1], "enabl": [0, 1], "level": [0, 1], "A": [0, 1], "json": [0, 1], "object": [0, 1], "custom": [0, 1], "These": 0, "accord": 0, "pitch": 0, "pleas": 0, "py": [0, 1], "figur": [0, 1], "suitabl": 0, "trial": [0, 1], "error": [0, 1], "basi": 0, "ad": [0, 1], "avoid": [0, 1], "hard": 0, "phrase_limit": [0, 1], "con": 0, "disabl": [0, 1], "after": [0, 1], "even": [0, 1], "i": [0, 1], "talk": 0, "stop": [0, 1], "sampl": [0, 1], "format": [0, 1], "recognizer_set": [0, 1], "energy_threshold": [0, 1], "1100": 0, "dynamic_energy_threshold": [0, 1], "pause_threshold": [0, 1], "2": [0, 1], "phrase_threshold": [0, 1], "non_speaking_dur": [0, 1], "descript": 0, "minimum": [0, 1], "audio": 0, "energi": [0, 1], "consid": [0, 1], "record": [0, 1], "greater": [0, 1], "louder": 0, "chang": [0, 1], "consider": 0, "threshold": [0, 1], "dynam": [0, 1], "non": 0, "befor": [0, 1], "can": [0, 1], "below": [0, 1], "thi": [0, 1], "ignor": [0, 1], "help": [0, 1], "filter": [0, 1], "keep": [0, 1], "both": [0, 1], "side": [0, 1], "github": 0, "usernam": [0, 1], "pass": [0, 1], "token": [0, 1], "weather": 0, "api": 0, "openweathermap": 0, "new": [0, 1], "newsapi": 0, "map": [0, 1], "googl": [0, 1], "wolfram": [0, 1], "alpha": [0, 1], "birthdai": [0, 1], "birth": 0, "date": [0, 1], "dd": [0, 1], "mm": [0, 1], "exampl": [0, 1], "24": [0, 1], "april": 0, "email": [0, 1], "sm": [0, 1], "notif": [0, 1], "gmail": [0, 1], "account": [0, 1], "send": [0, 1], "read": 0, "open": [0, 1], "altern": [0, 1], "an": [0, 1], "gmail_us": [0, 1], "gmail_pass": [0, 1], "recipi": [0, 1], "receiv": [0, 1], "io": 0, "integr": 0, "icloud": [0, 1], "recoveri": 0, "phone": [0, 1], "lost": 0, "mode": [0, 1], "target": [0, 1], "11234567890": 0, "meet": 0, "ic": [0, 1], "url": [0, 1], "share": 0, "inform": [0, 1], "end": [0, 1], "mute": [0, 1], "FOR": 0, "applic": 0, "bulb": [0, 1], "when": [0, 1], "calend": 0, "within": [0, 1], "scan": [0, 1], "hour": [0, 1], "sync": [0, 1], "interv": [0, 1], "gener": [0, 1], "wi": [0, 1], "fi": [0, 1], "wifi": 0, "ssid": [0, 1], "wireless": 0, "retri": 0, "frequenc": [0, 1], "check": [0, 1], "internet": 0, "vpnserver": 0, "vpn": 0, "creat": [0, 1], "server": 0, "profil": [0, 1], "authent": 0, "domain": 0, "zone": 0, "alia": [0, 1], "car": 0, "appli": [0, 1], "jlr": [0, 1], "vehicl": [0, 1], "subscrib": 0, "incontrol": [0, 1], "pin": [0, 1], "garag": 0, "myq": 0, "telegram": 0, "bot": [0, 1], "chat": [0, 1], "userid": [0, 1], "chatid": 0, "o": [0, 1], "agnost": 0, "model": 0, "synthesi": [0, 1], "docker": [0, 1], "contain": [0, 1], "request": [0, 1], "qualiti": [0, 1], "convers": [0, 1], "medium": [0, 1], "independ": 0, "p": 0, "5002": 0, "e": [0, 1], "home": [0, 1], "v": [0, 1], "usr": 0, "ca": 0, "certif": 0, "etc": [0, 1], "ssl": 0, "cert": 0, "w": 0, "pwd": 0, "u": 0, "g": [0, 1], "rhasspi": 0, "larynx": [0, 1], "better": [0, 1], "respons": [0, 1], "might": [0, 1], "negligibli": 0, "slower": [0, 1], "If": [0, 1], "you": 0, "don": [0, 1], "t": [0, 1], "simpli": [0, 1], "want": 0, "speech_synthesis_timeout": [0, 1], "also": [0, 1], "done": [0, 1], "automat": 0, "fail": [0, 1], "launch": [0, 1], "upon": [0, 1], "startup": [0, 1], "offlin": 0, "commun": 0, "port": 0, "4483": 0, "offlinecomm": 0, "worker": [0, 1], "uvicorn": [0, 1], "spin": 0, "up": [0, 1], "stock": [0, 1], "portfolio": [0, 1], "robinhood": 0, "qr": 0, "login": [0, 1], "endpoint": [0, 1], "auth": 0, "everi": [0, 1], "surveil": 0, "webcam": 0, "live": [0, 1], "feed": [0, 1], "via": [0, 1], "session": [0, 1], "300": [0, 1], "monitor": [0, 1], "otp": 0, "revers": [0, 1], "proxi": [0, 1], "tunnel": [0, 1], "expos": 0, "15": [0, 1], "minut": [0, 1], "There": [0, 1], "two": [0, 1], "intern": [0, 1], "compat": [0, 1], "certain": [0, 1], "background_task": [0, 1], "yaml": [0, 1], "directori": [0, 1], "instruct": 0, "1_800": 0, "just": [0, 1], "turn": [0, 1], "light": 0, "30": [0, 1], "retain": 0, "last": [0, 1], "eg": 0, "color": [0, 1], "ignore_hour": [0, 1], "schedul": 0, "am": [0, 1], "pm": [0, 1], "10_800": 0, "remind": 0, "me": 0, "drink": 0, "water": 0, "specifi": [0, 1], "21": [0, 1], "6": [0, 1], "between": [0, 1], "9": [0, 1], "crontab": 0, "extern": [0, 1], "cron": [0, 1], "express": [0, 1], "need": [0, 1], "find": [0, 1], "delet": [0, 1], "tar": 0, "zcf": 0, "backup": [0, 1], "tgz": 0, "demand": 0, "connector": 0, "current": [0, 1], "present": [0, 1], "howev": 0, "directli": 0, "toni": [0, 1], "0123456789": 0, "thor": 0, "1234567890": 0, "eddard": 0, "ned": 0, "com": [0, 1], "aegon": 0, "egg": 0, "yahoo": 0, "sourc": [0, 1], "smart_devic": [0, 1], "hostnam": [0, 1], "magichom": [0, 1], "lgwebo": [0, 1], "roku": [0, 1], "tv": 0, "includ": [0, 1], "brand": 0, "lg": [0, 1], "distinguish": 0, "accordingli": [0, 1], "your": 0, "doesn": [0, 1], "mac": [0, 1], "bandwidth": 0, "saver": 0, "under": [0, 1], "network": [0, 1], "For": [0, 1], "first": [0, 1], "prompt": [0, 1], "accept": [0, 1], "onc": [0, 1], "client": [0, 1], "repeat": [0, 1], "identifi": [0, 1], "The": [0, 1], "action": [0, 1], "dictionari": [0, 1], "nest": 0, "multipl": [0, 1], "paramet": [0, 1], "bedroom": 0, "hallwai": 0, "basement": 0, "kitchen": 0, "room": 0, "parti": [0, 1], "engag": 0, "individu": [0, 1], "client_kei": [0, 1], "unavail": 0, "mac_address": [0, 1], "either": [0, 1], "string": [0, 1], "wired_mac_address": 0, "wireless_mac_address": 0, "execut": [0, 1], "pre": [0, 1], "defin": [0, 1], "without": [0, 1], "ani": [0, 1], "interact": [0, 1], "look": [0, 1], "str": [0, 1], "sai": [0, 1], "weekdai": [0, 1], "weekend": [0, 1], "particular": [0, 1], "Not": 0, "daili": [0, 1], "match": 0, "exactli": 0, "describ": 0, "06": 0, "00": 0, "mondai": [0, 1], "fridai": [0, 1], "my": 0, "50": [0, 1], "wednesdai": [0, 1], "100": [0, 1], "08": 0, "saturdai": [0, 1], "sundai": [0, 1], "09": 0, "12": [0, 1], "perform": [0, 1], "result": [0, 1], "meeting_ev": 0, "what": [0, 1], "do": 0, "todai": [0, 1], "refer": [0, 1], "wiki": [0, 1], "page": [0, 1], "overview": 0, "demo": 0, "video": [0, 1], "docstr": 0, "style": [0, 1], "convent": 0, "pep": 0, "8": 0, "clean": [0, 1], "commit": 0, "hook": 0, "flake8": 0, "isort": 0, "changelog": 0, "f": 0, "release_not": 0, "rst": 0, "precommit": 0, "ensur": [0, 1], "doc": [0, 1], "creation": 0, "sphinx": 0, "recommonmark": 0, "http": [0, 1], "org": [0, 1], "project": 0, "thevickypedia": 0, "sivanandha": 0, "rao": [0, 1], "mit": 0, "kick": 1, "off": 1, "prerequisit": 1, "peripher": 1, "env": 1, "variabl": 1, "featur": 1, "contact": 1, "smart": 1, "setup": 1, "option": 1, "guid": 1, "faq": 1, "code": 1, "standard": 1, "releas": 1, "note": 1, "lint": 1, "pypi": 1, "packag": 1, "runbook": 1, "licens": 1, "copyright": 1, "list_splitt": 1, "original_list": 1, "delimit": 1, "split": 1, "given": 1, "final": 1, "where": 1, "must": 1, "main_list": 1, "drive": 1, "jaguar": 1, "stark": 1, "mark": 1, "iii": 1, "sinc": 1, "return": 1, "type": 1, "about": 1, "instanti": 1, "builtin": 1, "rais": 1, "cameraerror": 1, "unabl": 1, "_get_camera_info_linux": 1, "yield": 1, "raw": 1, "output": 1, "_list_cameras_linux": 1, "_get_camera_info_window": 1, "dict": 1, "windowso": 1, "_list_cameras_window": 1, "_get_camera_info_darwin": 1, "xml": 1, "_list_cameras_darwin": 1, "get_camera_info": 1, "union": 1, "space": 1, "channeltyp": 1, "channel": 1, "input_channel": 1, "maxinputchannel": 1, "output_channel": 1, "maxoutputchannel": 1, "_generate_next_value_": 1, "count": 1, "last_valu": 1, "next": 1, "member": 1, "exist": 1, "assign": 1, "_member_names_": 1, "_member_map_": 1, "_member_type_": 1, "_value2member_map_": 1, "channel_typ": 1, "get_audio_devic": 1, "int": 1, "float": 1, "iter": 1, "over": 1, "input": 1, "take": 1, "argument": 1, "determin": 1, "avail": 1, "learn": 1, "train": 1, "engin": 1, "convert": 1, "attribut": 1, "get_english_voic": 1, "english": 1, "get_voice_by_languag": 1, "lang_cod": 1, "get_voice_by_index": 1, "get_voice_by_nam": 1, "get_voice_by_gend": 1, "gender": 1, "set_voic": 1, "voice_index": 1, "noreturn": 1, "per": 1, "speak_all_voic": 1, "speak_english_voic": 1, "async": 1, "save_for_refer": 1, "save": 1, "origin": 1, "dump": 1, "asynchron": 1, "call": 1, "never": 1, "loop": 1, "spectrum": 1, "matplotlib": 1, "graphmic": 1, "sound": 1, "readthedoc": 1, "graph_mic": 1, "wrap": 1, "sampler": 1, "down_sampl": 1, "window_s": 1, "tupl": 1, "dark_mod": 1, "bool": 1, "line": 1, "line2d": 1, "plot_data": 1, "ndarrai": 1, "list_devic": 1, "devicelist": 1, "audion": 1, "audio_callback": 1, "indata": 1, "frame": 1, "struct": 1, "statu": 1, "callbackflag": 1, "separ": 1, "thread": 1, "block": 1, "update_plot": 1, "updat": 1, "callback": 1, "happen": 1, "frequent": 1, "than": 1, "therefor": 1, "queue": 1, "tend": 1, "data": 1, "plot_mic": 1, "40": 1, "numer": 1, "substr": 1, "visibl": 1, "slot": 1, "displai": 1, "nth": 1, "size": 1, "7": 1, "inch": 1, "width": 1, "height": 1, "how": 1, "quick": 1, "graph": 1, "move": 1, "screen": 1, "lower": 1, "1000": 1, "pretti": 1, "almost": 1, "black": 1, "_kick_off": 1, "signal": 1, "restart_check": 1, "await": 1, "heard": 1, "stream": 1, "acknowledg": 1, "plai": 1, "sent": 1, "should_return": 1, "disturb": 1, "accident": 1, "woke": 1, "work": 1, "porcupin": 1, "instanc": 1, "occurr": 1, "higher": 1, "fewer": 1, "miss": 1, "cost": 1, "increas": 1, "toler": 1, "overflow": 1, "handl": 1, "open_stream": 1, "pyaudio": 1, "node": 1, "audio_stream": 1, "forev": 1, "invok": 1, "exit": 1, "manual": 1, "interrupt": 1, "kill": 1, "held": 1, "close": 1, "_preexec": 1, "keywords_handl": 1, "get_tim": 1, "rewrite_keyword": 1, "init": 1, "els": 1, "suppress": 1, "fast": 1, "enable_cor": 1, "cor": 1, "cross": 1, "restrict": 1, "update_keyword": 1, "buffer": 1, "modif": 1, "run_robinhood": 1, "dedic": 1, "wa": 1, "modifi": 1, "earlier": 1, "past": 1, "start_robinhood": 1, "gather": 1, "alreadi": 1, "apiserv": 1, "state": 1, "protocol": 1, "overrid": 1, "encod": 1, "issu": 1, "742": 1, "issuecom": 1, "674411676": 1, "install_signal_handl": 1, "run_in_parallel": 1, "fast_api": 1, "being": 1, "so": 1, "attempt": 1, "offline_has_access": 1, "httpbasiccredenti": 1, "depend": 1, "httpbearer": 1, "mention": 1, "header": 1, "apirespons": 1, "401": 1, "invalid": 1, "robinhood_has_access": 1, "surveillance_has_access": 1, "offlinecommunicatormod": 1, "basemodel": 1, "pars": 1, "validationerror": 1, "cannot": 1, "form": 1, "native_audio": 1, "speech_timeout": 1, "_abc_impl": 1, "_abc": 1, "_abc_data": 1, "stockmonitormod": 1, "emailstr": 1, "apikei": 1, "plaintext": 1, "cameraindexmod": 1, "speechsynthesismod": 1, "across": 1, "hashabl": 1, "baseconfig": 1, "public_url": 1, "httpurl": 1, "camera_index": 1, "client_id": 1, "available_camera": 1, "queue_manag": 1, "session_manag": 1, "user_info": 1, "stock_list": 1, "connectionmanag": 1, "websocket": 1, "fastapi": 1, "tiangolo": 1, "advanc": 1, "disconnect": 1, "redirect_index": 1, "redirect": 1, "health": 1, "offlinecommun": 1, "success": 1, "get_favicon": 1, "favicon": 1, "ico": 1, "filerespons": 1, "front": 1, "list_fil": 1, "download": 1, "upload": 1, "get_fil": 1, "filenam": 1, "put_fil": 1, "uploadfil": 1, "pair": 1, "offline_compat": 1, "authenticate_robinhood": 1, "singl": 1, "successfulli": 1, "503": 1, "robinhood_endpoint_auth": 1, "succe": 1, "mfa": 1, "verifi": 1, "nullifi": 1, "soon": 1, "robinhood_path": 1, "serv": 1, "static": 1, "403": 1, "null": 1, "404": 1, "html": 1, "found": 1, "417": 1, "auto": 1, "render": 1, "htmlrespons": 1, "behind": 1, "multi": 1, "factor": 1, "one": 1, "usabl": 1, "hex": 1, "uuid": 1, "enter": 1, "queri": 1, "refresh": 1, "useless": 1, "becaus": 1, "memori": 1, "clear": 1, "kill_pow": 1, "insert": 1, "stopper": 1, "offline_communicator_api": 1, "input_data": 1, "instead": 1, "querystr": 1, "built": 1, "204": 1, "empti": 1, "422": 1, "part": 1, "made": 1, "speech_synthesi": 1, "speech_synthesis_voic": 1, "500": 1, "raise_for_statu": 1, "gettext": 1, "ot": 1, "synthes": 1, "wasn": 1, "stock_monitor": 1, "apikey_is_allow": 1, "compar": 1, "send_otp_stock_monitor": 1, "email_address": 1, "reset_timeout": 1, "expir": 1, "deliveri": 1, "stock_monitor_api": 1, "email_otp": 1, "One": 1, "passcod": 1, "put": 1, "plain": 1, "expect": 1, "localhost": 1, "javascript": 1, "jwt": 1, "ticker": 1, "max": 1, "price": 1, "min": 1, "correct": 1, "percentag": 1, "vigneshrao": 1, "entri": 1, "409": 1, "lesser": 1, "grater": 1, "maximum": 1, "against": 1, "502": 1, "backend": 1, "authenticate_surveil": 1, "cam": 1, "chosen": 1, "surveillance_endpoint_auth": 1, "frontend": 1, "307": 1, "video_fe": 1, "streamingrespons": 1, "direct": 1, "collect": 1, "websocket_endpoint": 1, "epoch": 1, "multiprocess": 1, "anywai": 1, "valueerror": 1, "still": 1, "eoferror": 1, "entrypoint": 1, "stem": 1, "wrapper": 1, "point": 1, "bare": 1, "get_entrypoint": 1, "potenti": 1, "discoveri": 1, "crude": 1, "wai": 1, "rout": 1, "apirout": 1, "looger": 1, "configur": 1, "markethour": 1, "market": 1, "timezon": 1, "usa": 1, "extend": 1, "regular": 1, "rh_cron_schedul": 1, "stock_report": 1, "sm_cron_schedul": 1, "include_weekend": 1, "stockmonitor_squir": 1, "ticker_gather": 1, "charact": 1, "nasdaq": 1, "drop": 1, "ascii": 1, "alphabet": 1, "thread_work": 1, "function_to_cal": 1, "callabl": 1, "threadpoolexecutor": 1, "method": 1, "arg": 1, "spun": 1, "cleanup_stock_userdata": 1, "duplic": 1, "insert_stock_userdata": 1, "get_stock_userdata": 1, "delete_stock_userdata": 1, "surveillance_squir": 1, "generate_error_fram": 1, "dimens": 1, "byte": 1, "imag": 1, "x": 1, "numpi": 1, "coordin": 1, "boundari": 1, "center": 1, "test_camera": 1, "provid": 1, "gen_fram": 1, "flip": 1, "streamer": 1, "asynciter": 1, "extract": 1, "aliv": 1, "bytestr": 1, "concat": 1, "push": 1, "larg": 1, "item": 1, "onto": 1, "essenti": 1, "despit": 1, "immedi": 1, "mai": 1, "latenc": 1, "timeout_otp": 1, "reset_robinhood": 1, "reset": 1, "reset_stock_monitor": 1, "reset_surveil": 1, "generate_graph": 1, "bar": 1, "histor": 1, "fetch": 1, "stackoverflow": 1, "49729752": 1, "group": 1, "group_data": 1, "column": 1, "rest": 1, "among": 1, "get_pric": 1, "along": 1, "exchang": 1, "closest_maximum": 1, "stock_pric": 1, "96": 1, "85": 1, "becom": 1, "notifi": 1, "amount": 1, "though": 1, "less": 1, "actual": 1, "closest_minimum": 1, "225": 1, "220": 1, "242": 1, "send_notif": 1, "continu": 1, "watcher": 1, "profit": 1, "loss": 1, "purchas": 1, "watchlist": 1, "strict": 1, "sweep": 1, "24h": 1, "ago": 1, "10minut": 1, "were": 1, "watch": 1, "unicod": 1, "went": 1, "down": 1, "necessari": 1, "jinja": 1, "report_gather": 1, "create_alarm": 1, "am_pm": 1, "timer": 1, "lock": 1, "week": 1, "set_alarm": 1, "clock": 1, "kill_alarm": 1, "remov": 1, "ring": 1, "mp3": 1, "revert": 1, "automation_handl": 1, "renam": 1, "tmp": 1, "rewrite_autom": 1, "write_data": 1, "rewrit": 1, "auto_help": 1, "offline_list": 1, "background_task_handl": 1, "compare_task": 1, "dict1": 1, "dict2": 1, "similar": 1, "remove_corrupt": 1, "backgroundtask": 1, "corrupt": 1, "validate_task": 1, "info": 1, "current_set_temperatur": 1, "latitud": 1, "longitud": 1, "condens": 1, "its": 1, "own": 1, "failur": 1, "messag": 1, "turn_on": 1, "climat": 1, "turn_off": 1, "enable_guard": 1, "guardian": 1, "unlock": 1, "dt_string": 1, "honk": 1, "retriev": 1, "report": 1, "remot": 1, "31": 1, "lo": 1, "57": 1, "58": 1, "84": 1, "convert_dt_report": 1, "utc": 1, "local": 1, "status_data": 1, "subscription_data": 1, "subscript": 1, "temp": 1, "end_tim": 1, "establish": 1, "primari": 1, "13": 1, "digit": 1, "integ": 1, "microsecond": 1, "logic": 1, "read_gmail": 1, "unread": 1, "credenti": 1, "send_sm": 1, "bodi": 1, "subject": 1, "through": 1, "gatewai": 1, "destin": 1, "smtp": 1, "lib": 1, "send_email": 1, "sender": 1, "mail": 1, "comm_squir": 1, "extract_contact": 1, "initiate_sm": 1, "ask": 1, "initiate_email": 1, "wifi_connector": 1, "unknown": 1, "appropri": 1, "shouldn": 1, "stopsign": 1, "sleep": 1, "split_phras": 1, "statement": 1, "delay_condit": 1, "delai": 1, "said": 1, "offline_commun": 1, "timed_delai": 1, "awaken": 1, "greet_check": 1, "greet": 1, "renew": 1, "break": 1, "right": 1, "noth": 1, "approv": 1, "uptim": 1, "system_vit": 1, "pid": 1, "exit_process": 1, "hold": 1, "sleep_control": 1, "reduc": 1, "sentri": 1, "restart_control": 1, "quiet": 1, "stop_termin": 1, "iterm": 1, "shutdown": 1, "deep": 1, "delete_docker_contain": 1, "intent": 1, "readm": 1, "cleanup": 1, "flush": 1, "stdio": 1, "proce": 1, "delete_log": 1, "period": 1, "inod": 1, "delete_pycach": 1, "__pycache__": 1, "sub": 1, "dir": 1, "set_execut": 1, "starter": 1, "crucial": 1, "put_listener_st": 1, "master": 1, "purg": 1, "older": 1, "pycach": 1, "crontab_executor": 1, "log_fil": 1, "On": 1, "short": 1, "date_tim": 1, "current_tim": 1, "respect": 1, "current_d": 1, "time_travel": 1, "display_funct": 1, "detected_fac": 1, "captur": 1, "pictur": 1, "preview": 1, "futur": 1, "get_contact": 1, "defaultdict": 1, "get_frequ": 1, "func": 1, "put_frequ": 1, "write": 1, "get_loc": 1, "myq_control": 1, "asyncthread": 1, "kwarg": 1, "asynchronosli": 1, "super": 1, "run_async": 1, "github_control": 1, "clone": 1, "repositori": 1, "get_stat": 1, "db": 1, "put_stat": 1, "stop_and_respond": 1, "repsond": 1, "politely_dis": 1, "guard_dis": 1, "threat": 1, "runtim": 1, "security_runn": 1, "guard_en": 1, "anoth": 1, "previou": 1, "threat_notifi": 1, "face_detect": 1, "case": 1, "attach": 1, "intrud": 1, "ip_address": 1, "simpl": 1, "see": 1, "privat": 1, "ip": 1, "vpn_checker": 1, "public_ip_info": 1, "public": 1, "ip_info": 1, "get_connection_info": 1, "ethernet": 1, "speed_test": 1, "ping": 1, "psutil": 1, "en": 1, "latest": 1, "cpu_count": 1, "ios_funct": 1, "device_selector": 1, "appledevic": 1, "select": 1, "location_servic": 1, "appl": 1, "locate_devic": 1, "target_devic": 1, "warm": 1, "yellow": 1, "cool": 1, "white": 1, "lumen": 1, "rgb": 1, "255": 1, "red": 1, "green": 1, "andblu": 1, "alter": 1, "threadexecutor": 1, "host_ip": 1, "pool": 1, "avail_check": 1, "aren": 1, "reachabl": 1, "lights_squir": 1, "preset": 1, "device_ip": 1, "random": 1, "runner": 1, "check_statu": 1, "remove_statu": 1, "update_statu": 1, "children": 1, "party_mod": 1, "listener_control": 1, "get_listener_st": 1, "get_coordinates_from_ip": 1, "speedtest": 1, "get_location_from_coordin": 1, "write_current_loc": 1, "distanc": 1, "distance_control": 1, "calcul": 1, "place": 1, "locate_plac": 1, "detail": 1, "no_repeat": 1, "geocod": 1, "placehold": 1, "switch": 1, "recurs": 1, "himself": 1, "job": 1, "get_tunnel": 1, "ngrok": 1, "thei": 1, "forever_ngrok": 1, "post": 1, "on_demand_offline_autom": 1, "anystr": 1, "called_by_offlin": 1, "whatev": 1, "l": 1, "music": 1, "player": 1, "google_hom": 1, "socket": 1, "deblockt": 1, "pull": 1, "most": 1, "brokenpipeerror": 1, "usual": 1, "written": 1, "occur": 1, "tri": 1, "while": 1, "NOT": 1, "ioerror": 1, "errno": 1, "epip": 1, "write_screen": 1, "joke": 1, "chucknorri": 1, "flip_a_coin": 1, "head": 1, "tail": 1, "choic": 1, "fact": 1, "tell": 1, "skim": 1, "news_sourc": 1, "fox": 1, "around": 1, "thing": 1, "morn": 1, "give": 1, "routin": 1, "abus": 1, "photo": 1, "ambienc": 1, "pypi_vers": 1, "package_nam": 1, "port_handl": 1, "is_port_in_us": 1, "kill_port_pid": 1, "tcp": 1, "lsof": 1, "child": 1, "differ": 1, "same": 1, "mainprocess": 1, "delete_db": 1, "shut": 1, "clear_db": 1, "create_process_map": 1, "func_nam": 1, "special": 1, "speech_synthes": 1, "telegram_api": 1, "re": 1, "real": 1, "start_process": 1, "achiev": 1, "parallel": 1, "otherwis": 1, "poll": 1, "lookout": 1, "reconnect": 1, "stop_child_process": 1, "stop_process": 1, "create_remind": 1, "to_about": 1, "find_nam": 1, "person": 1, "icon": 1, "rh": 1, "total": 1, "get_simulation_data": 1, "initiate_simul": 1, "simulation_data": 1, "categori": 1, "run_simul": 1, "system_info": 1, "suggest": 1, "reboot": 1, "get_distributor_info_linux": 1, "distributor": 1, "hosted_device_info": 1, "botinus": 1, "connectionerror": 1, "20": 1, "todo_list": 1, "todo": 1, "get_todo": 1, "add_todo": 1, "delete_todo_item": 1, "delete_todo": 1, "tv_statu": 1, "tv_ip_list": 1, "abl": 1, "256": 1, "possibl": 1, "televis": 1, "web": 1, "tv_control": 1, "tv_ip": 1, "nicknam": 1, "webo": 1, "uncategor": 1, "broad": 1, "claus": 1, "did": 1, "consum": 1, "google_map": 1, "nearbi": 1, "predefin": 1, "main_volum": 1, "speaker_volum": 1, "setvolum": 1, "rlatour": 1, "setvol": 1, "vpn_server": 1, "regional_phras": 1, "extract_custom_region": 1, "region": 1, "vpn_server_switch": 1, "custom_region": 1, "destroi": 1, "aw": 1, "classif": 1, "algorithm": 1, "keywordclassifi": 1, "word_match": 1, "reverse_lookup": 1, "lookup": 1, "match_list": 1, "forward_lookup": 1, "exact": 1, "regex": 1, "wikipedia_": 1, "ssqualiti": 1, "medium_qu": 1, "us_northern_english_mal": 1, "glow_tt": 1, "audio_driv": 1, "choos": 1, "frequently_us": 1, "function_nam": 1, "purpos": 1, "analyz": 1, "order": 1, "later": 1, "stdout": 1, "upcom": 1, "unless": 1, "check_exist": 1, "tradit": 1, "commandlin": 1, "cid": 1, "tt": 1, "stt": 1, "tts_stt": 1, "generate_audio_fil": 1, "filepath": 1, "text_to_audio": 1, "flaki": 1, "nativ": 1, "wav": 1, "kernel": 1, "audio_to_text": 1, "voice_default": 1, "voice_chang": 1, "authbear": 1, "auth_bear": 1, "bearerauth": 1, "getpostman": 1, "view": 1, "6250319": 1, "rznbmzqo": 1, "landrov": 1, "_open": 1, "device_id": 1, "refresh_token": 1, "china_serv": 1, "auth_expiri": 1, "uuid4": 1, "china": 1, "durat": 1, "forc": 1, "post_data": 1, "extens": 1, "_register_device_and_log_in": 1, "regist": 1, "_register_auth": 1, "_set_head": 1, "access_token": 1, "_authent": 1, "_register_devic": 1, "_login_us": 1, "get_vehicl": 1, "get_user_info": 1, "update_user_info": 1, "user_info_data": 1, "vin": 1, "incom": 1, "get_contact_info": 1, "mcc": 1, "road": 1, "assist": 1, "tracker": 1, "mobil": 1, "countri": 1, "get_attribut": 1, "get_statu": 1, "ev": 1, "get_health_statu": 1, "get_departure_tim": 1, "departur": 1, "get_wakeup_tim": 1, "wakeup": 1, "get_subscription_packag": 1, "get_trip": 1, "trip": 1, "associ": 1, "000": 1, "get_guardian_mode_alarm": 1, "get_guardian_mode_alert": 1, "alert": 1, "get_guardian_mode_statu": 1, "get_guardian_mode_settings_us": 1, "get_guardian_mode_settings_system": 1, "trip_id": 1, "get_posit": 1, "posit": 1, "get_servic": 1, "servic": 1, "histori": 1, "get_service_statu": 1, "service_id": 1, "get_rcc_target_valu": 1, "set_attribut": 1, "registration_numb": 1, "plate": 1, "reset_alarm": 1, "honk_blink": 1, "horn": 1, "flash": 1, "remote_engine_start": 1, "target_temperatur": 1, "remote_engine_stop": 1, "set_rcc_target_temperatur": 1, "preconditioning_start": 1, "celsiu": 1, "precondit": 1, "absenc": 1, "decim": 1, "210": 1, "equal": 1, "0c": 1, "155": 1, "285": 1, "hi": 1, "preconditioning_stop": 1, "climate_priorit": 1, "prioriti": 1, "priorit": 1, "comfort": 1, "prioritize_rang": 1, "prioritize_comfort": 1, "_preconditioning_control": 1, "service_paramet": 1, "charging_stop": 1, "charg": 1, "charging_start": 1, "set_max_soc": 1, "max_charge_level": 1, "set_one_off_max_soc": 1, "Will": 1, "presum": 1, "charger": 1, "add_departure_tim": 1, "year": 1, "month": 1, "intend": 1, "seemingli": 1, "uniqu": 1, "add_repeated_departure_tim": 1, "thursdai": 1, "tuesdai": 1, "delete_departure_tim": 1, "add_charging_period": 1, "hour_from": 1, "minute_from": 1, "hour_to": 1, "minute_to": 1, "_charging_profile_control": 1, "service_parameter_kei": 1, "set_wakeup_tim": 1, "wakeup_tim": 1, "four": 1, "inact": 1, "In": 1, "delete_wakeup_tim": 1, "cancel": 1, "_set_wakeup": 1, "wakeup_data": 1, "enable_service_mod": 1, "expiration_tim": 1, "theft": 1, "enable_guardian_mod": 1, "sort": 1, "took": 1, "timestamp": 1, "enable_transport_mod": 1, "transport": 1, "enable_privacy_mod": 1, "journei": 1, "long": 1, "disable_privacy_mod": 1, "resum": 1, "_prov_command": 1, "serviceconfigur": 1, "_authenticate_vin_protected_servic": 1, "service_nam": 1, "_authenticate_servic": 1, "outgo": 1, "keywordsbas": 1, "keywords_bas": 1, "keyword_map": 1, "singular": 1, "plural": 1, "wherev": 1, "inflect": 1, "singular_noun": 1, "But": 1, "approach": 1, "inconsist": 1, "cronexpress": 1, "1970": 1, "epoch_utc_offset": 1, "invalidargu": 1, "field": 1, "offset": 1, "As": 1, "sixth": 1, "element": 1, "suppli": 1, "descend": 1, "signific": 1, "day_nam": 1, "zip": 1, "59": 1, "23": 1, "days_of_month": 1, "days_of_week": 1, "l_field": 1, "field_rang": 1, "month_nam": 1, "default_epoch": 1, "substitut": 1, "annual": 1, "hourli": 1, "midnight": 1, "monthli": 1, "weekli": 1, "yearli": 1, "compute_numtab": 1, "recomput": 1, "string_tab": 1, "check_trigg": 1, "date_tupl": 1, "utc_offset": 1, "parse_atom": 1, "minmax": 1, "inclus": 1, "upper": 1, "4": 1, "18": 1, "baseset": 1, "common": 1, "unsupportedo": 1, "positiveint": 1, "ram": 1, "positivefloat": 1, "physical_cor": 1, "logical_cor": 1, "wake_word": 1, "eventapp": 1, "enum": 1, "recognizerset": 1, "high_qual": 1, "low_qual": 1, "low": 1, "link": 1, "constrainedstrvalu": 1, "classmethod": 1, "check_empty_str": 1, "check_hours_format": 1, "envconfig": 1, "directorypath": 1, "root_us": 1, "mute_for_meet": 1, "voice_nam": 1, "voice_r": 1, "speaker_index": 1, "microphone_index": 1, "log_retent": 1, "websit": 1, "author_mod": 1, "weather_api": 1, "wolfram_api": 1, "maps_api": 1, "news_api": 1, "open_gmail_us": 1, "open_gmail_pass": 1, "phone_numb": 1, "offline_host": 1, "offline_port": 1, "offline_pass": 1, "event_app": 1, "ics_url": 1, "sync_meet": 1, "sync_ev": 1, "surveillance_session_timeout": 1, "icloud_us": 1, "icloud_pass": 1, "icloud_recoveri": 1, "robinhood_us": 1, "robinhood_pass": 1, "robinhood_qr": 1, "git_us": 1, "git_pass": 1, "vpn_usernam": 1, "vpn_password": 1, "vpn_domain": 1, "vpn_record_nam": 1, "car_email": 1, "car_pass": 1, "car_pin": 1, "myq_usernam": 1, "myq_password": 1, "bot_token": 1, "bot_chat_id": 1, "bot_us": 1, "speech_synthesis_qu": 1, "speech_synthesis_host": 1, "speech_synthesis_port": 1, "wifi_ssid": 1, "wifi_password": 1, "connection_retri": 1, "env_prefix": 1, "env_fil": 1, "parse_microphone_index": 1, "parse_speaker_index": 1, "parse_birthdai": 1, "tmp_autom": 1, "tmp_background_task": 1, "base_db": 1, "task_db": 1, "stock_db": 1, "stock_list_backup": 1, "training_data": 1, "app_launch": 1, "event_script": 1, "speech_synthesis_wav": 1, "speech_synthesis_log": 1, "speech_synthesis_id": 1, "coin": 1, "exhaust": 1, "tv_connect": 1, "tv_scan": 1, "cursor": 1, "create_t": 1, "table_nam": 1, "__testdatabas": 1, "random_singl": 1, "random_doubl": 1, "mask": 1, "meaning": 1, "py_error_handl": 1, "err": 1, "fmt": 1, "especi": 1, "no_alsa_err": 1, "alsa": 1, "them": 1, "correctli": 1, "goe": 1, "pulseaudio": 1, "jack": 1, "hardwar": 1, "seem": 1, "taken": 1, "hide": 1, "comment": 1, "speech_recognit": 1, "uberi": 1, "182": 1, "191": 1, "forum": 1, "raspberrypi": 1, "viewtop": 1, "php": 1, "136974": 1, "oserror": 1, "unsupport": 1, "blockingioerror": 1, "overflowerror": 1, "keyboardinterrupt": 1, "status_cod": 1, "httpexcept": 1, "invalidenvvar": 1, "missingenvvar": 1, "tverror": 1, "connectionreseterror": 1, "nocoversfound": 1, "notimplementederror": 1, "covernotonlin": 1, "msg": 1, "systemerror": 1, "verify_imag": 1, "condition_check": 1, "dataset": 1, "learning_r": 1, "hog": 1, "load_dataset": 1, "face_recognit": 1, "retry_count": 1, "quit": 1, "enclos": 1, "mirror": 1, "cv2_open": 1, "jpg": 1, "grayscal": 1, "neighbor": 1, "vertic": 1, "capture_imag": 1, "magichomeapi": 1, "smartlight": 1, "smart_light": 1, "check_number_rang": 1, "calculate_checksum": 1, "bytes_": 1, "checksum": 1, "arrai": 1, "device_typ": 1, "firmwar": 1, "ww": 1, "cw": 1, "udp": 1, "try": 1, "api_port": 1, "5577": 1, "update_devic": 1, "r": 1, "b": 1, "warm_whit": 1, "cool_whit": 1, "we": 1, "blue": 1, "send_preset_funct": 1, "preset_numb": 1, "rage": 1, "0x25": 1, "37": 1, "0x38": 1, "56": 1, "send_byt": 1, "hasn": 1, "been": 1, "reestablish": 1, "preset_valu": 1, "customlogg": 1, "custom_logg": 1, "custom_handl": 1, "log_format": 1, "formatt": 1, "filehandl": 1, "testlogg": 1, "regardless": 1, "test_log": 1, "caller": 1, "custom_tim": 1, "struct_tim": 1, "formattim": 1, "dst": 1, "daylight": 1, "apiconfig": 1, "addprocessnam": 1, "processnam": 1, "process_nam": 1, "logrecord": 1, "multiprocessing_logg": 1, "subprocess": 1, "wordnetweb": 1, "princeton": 1, "edu": 1, "term": 1, "summari": 1, "all_dai": 1, "timedelta": 1, "convert_to_local_tz": 1, "ddd_object": 1, "vdddtype": 1, "all_day_ev": 1, "dt_start": 1, "dt_end": 1, "parse_calendar": 1, "calendar_data": 1, "lookup_d": 1, "icalendar": 1, "ics_meet": 1, "meetings_writ": 1, "meetings_gather": 1, "custom_d": 1, "addon": 1, "deactiv": 1, "custom_meet": 1, "events_writ": 1, "events_gather": 1, "event_app_launch": 1, "applescript": 1, "microsoft": 1, "evalu": 1, "_set_default_voice_nam": 1, "_main_process_valid": 1, "_global_valid": 1, "parent": 1, "garage_control": 1, "aiohttp": 1, "onlin": 1, "back": 1, "flat": 1, "matrix": 1, "exclude_exc": 1, "throw": 1, "decor": 1, "hostname_to_ip": 1, "gethostbyname_ex": 1, "translat": 1, "ipv4": 1, "interfac": 1, "dn": 1, "carefulli": 1, "handwritten": 1, "bound": 1, "loopback": 1, "ones": 1, "gethostbynam": 1, "those": 1, "spot": 1, "behav": 1, "country_timezon": 1, "belong": 1, "celebr": 1, "holidai": 1, "observ": 1, "get_capit": 1, "dot": 1, "letter": 1, "unrecognized_dump": 1, "train_data": 1, "met": 1, "size_convert": 1, "byte_s": 1, "human": 1, "friendli": 1, "understand": 1, "lock_fil": 1, "alarm_fil": 1, "reminder_fil": 1, "hidden": 1, "check_restart": 1, "utc_to_loc": 1, "utc_dt": 1, "build_lookup": 1, "ahead": 1, "detect_lookup_d": 1, "humanized_day_to_datetim": 1, "yesterdai": 1, "tomorrow": 1, "check_stop": 1, "exit_messag": 1, "varieti": 1, "bye": 1, "no_env_var": 1, "unsupported_featur": 1, "flush_screen": 1, "ran": 1, "number_to_word": 1, "input_": 1, "capit": 1, "time_convert": 1, "remove_fil": 1, "sigterm": 1, "sigkil": 1, "connected_to_network": 1, "ins": 1, "dict2class": 1, "get_timezon": 1, "abbrevi": 1, "kms_to_mil": 1, "km": 1, "kilomet": 1, "mile": 1, "part_of_dai": 1, "afternoon": 1, "night": 1, "get_closest_match": 1, "closest": 1, "hash": 1, "sha": 1, "keygen_str": 1, "length": 1, "punctuat": 1, "keygen": 1, "keygen_uuid": 1, "32": 1, "d": 1, "words_to_numb": 1, "comma_separ": 1, "list_": 1, "comma": 1, "join": 1, "analysi": 1, "extract_tim": 1, "delay_calcul": 1, "extract_no": 1, "format_no": 1, "extract_str": 1, "matrix_to_flat_list": 1, "remove_dupl": 1, "block_print": 1, "release_print": 1, "get_free_port": 1, "bind": 1, "sock": 1, "getsocknam": 1, "slave": 1, "well": 1, "known": 1, "1023": 1, "1024": 1, "49151": 1, "49152": 1, "65535": 1, "pick": 1, "randomli": 1, "telegramapi": 1, "username_is_valid": 1, "get_title_by_nam": 1, "predict": 1, "mam": 1, "femal": 1, "male": 1, "unpredict": 1, "intro": 1, "telegrambot": 1, "file_content_url": 1, "botnon": 1, "file_path": 1, "_get_fil": 1, "payload": 1, "_make_request": 1, "60": 1, "submit": 1, "send_audio": 1, "chat_id": 1, "parse_mod": 1, "send_docu": 1, "send_photo": 1, "reply_to": 1, "markdown": 1, "repli": 1, "send_messag": 1, "poll_for_messag": 1, "swap": 1, "reprocess": 1, "verify_timeout": 1, "verify_stop": 1, "process_voic": 1, "process_docu": 1, "process_text": 1, "process_respons": 1, "audiohandl": 1, "audio_handl": 1, "audio_converter_mac": 1, "transcod": 1, "ftransc": 1, "audio_converter_win": 1, "input_filenam": 1, "output_audio_format": 1, "audioseg": 1, "pydub": 1, "file_handl": 1, "_list_fil": 1, "further": 1, "file_cont": 1, "c2f": 1, "celciu": 1, "farenheit": 1, "f2c": 1, "c2k": 1, "kelvin": 1, "k2c": 1, "k2f": 1, "f2k": 1, "emailtempl": 1, "outbound": 1, "origintempl": 1, "generictempl": 1, "exce": 1, "weboscli": 1, "much": 1, "quicker": 1, "unstabl": 1, "_reconnect": 1, "_init_statu": 1, "increase_volum": 1, "unit": 1, "decrease_volum": 1, "decreas": 1, "get_volum": 1, "set_volum": 1, "paus": 1, "rewind": 1, "forward": 1, "get_app": 1, "launch_app": 1, "app_nam": 1, "close_app": 1, "launch_info": 1, "get_sourc": 1, "inputsourc": 1, "set_sourc": 1, "val": 1, "current_app": 1, "foreground": 1, "audio_output": 1, "audiooutputsourc": 1, "audio_output_sourc": 1, "set_audio_output_sourc": 1, "rokuecp": 1, "program": 1, "md": 1, "8060": 1, "make_cal": 1, "power": 1, "keypress": 1, "predetermin": 1, "_set_vol_executor": 1, "With": 1, "lack": 1, "zero": 1, "setter": 1, "entir": 1, "broadcast_ip": 1, "default_port": 1, "create_packet": 1, "macaddress": 1, "magic": 1, "packet": 1, "lan": 1, "comput": 1, "construct": 1, "send_packet": 1, "adapt": 1, "search": 1}, "objects": {"jarvis._preexec": [[1, 0, 0, "-", "keywords_handler"]], "jarvis._preexec.keywords_handler": [[1, 1, 1, "", "get_time"], [1, 1, 1, "", "rewrite_keywords"]], "jarvis.api": [[1, 0, 0, "-", "fast"], [1, 0, 0, "-", "server"]], "jarvis.api.fast": [[1, 1, 1, "", "enable_cors"], [1, 1, 1, "", "run_robinhood"], [1, 1, 1, "", "start_robinhood"], [1, 1, 1, "", "update_keywords"]], "jarvis.api.modals": [[1, 0, 0, "-", "authenticator"]], "jarvis.api.modals.authenticator": [[1, 1, 1, "", "offline_has_access"], [1, 1, 1, "", "robinhood_has_access"], [1, 1, 1, "", "surveillance_has_access"]], "jarvis.api.modals.models": [[1, 2, 1, "", "CameraIndexModal"], [1, 2, 1, "", "OfflineCommunicatorModal"], [1, 2, 1, "", "SpeechSynthesisModal"], [1, 2, 1, "", "StockMonitorModal"]], "jarvis.api.modals.models.CameraIndexModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "index"]], "jarvis.api.modals.models.OfflineCommunicatorModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "command"], [1, 3, 1, "", "native_audio"], [1, 3, 1, "", "speech_timeout"]], "jarvis.api.modals.models.SpeechSynthesisModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "quality"], [1, 3, 1, "", "text"], [1, 3, 1, "", "timeout"], [1, 3, 1, "", "voice"]], "jarvis.api.modals.models.StockMonitorModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "apikey"], [1, 3, 1, "", "email"], [1, 3, 1, "", "plaintext"], [1, 3, 1, "", "request"], [1, 3, 1, "", "token"]], "jarvis.api.modals.settings": [[1, 0, 0, "-", "ConnectionManager"], [1, 2, 1, "", "Robinhood"], [1, 2, 1, "", "StockMonitor"], [1, 2, 1, "", "Surveillance"]], "jarvis.api.modals.settings.Robinhood": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "token"]], "jarvis.api.modals.settings.StockMonitor": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "stock_list"], [1, 3, 1, "", "user_info"], [1, 3, 1, "", "values"]], "jarvis.api.modals.settings.Surveillance": [[1, 3, 1, "", "available_cameras"], [1, 3, 1, "", "camera_index"], [1, 3, 1, "", "client_id"], [1, 3, 1, "", "frame"], [1, 3, 1, "", "processes"], [1, 3, 1, "", "public_url"], [1, 3, 1, "", "queue_manager"], [1, 3, 1, "", "session_manager"], [1, 3, 1, "", "token"]], "jarvis.api.routers": [[1, 0, 0, "-", "basics"], [1, 0, 0, "-", "fileio"], [1, 0, 0, "-", "helper"], [1, 0, 0, "-", "investment"], [1, 0, 0, "-", "offline"], [1, 0, 0, "-", "speech_synthesis"], [1, 0, 0, "-", "stock_monitor"], [1, 0, 0, "-", "surveillance"]], "jarvis.api.routers.basics": [[1, 1, 1, "", "get_favicon"], [1, 1, 1, "", "health"], [1, 1, 1, "", "redirect_index"]], "jarvis.api.routers.fileio": [[1, 1, 1, "", "get_file"], [1, 1, 1, "", "list_files"], [1, 1, 1, "", "put_file"]], "jarvis.api.routers.helper": [[1, 1, 1, "", "conversations"], [1, 1, 1, "", "keywords"], [1, 1, 1, "", "offline_compatible"]], "jarvis.api.routers.investment": [[1, 1, 1, "", "authenticate_robinhood"], [1, 1, 1, "", "robinhood_path"]], "jarvis.api.routers.offline": [[1, 1, 1, "", "kill_power"], [1, 1, 1, "", "offline_communicator_api"]], "jarvis.api.routers.speech_synthesis": [[1, 1, 1, "", "speech_synthesis"], [1, 1, 1, "", "speech_synthesis_voices"]], "jarvis.api.routers.stock_monitor": [[1, 1, 1, "", "apikey_is_allowed"], [1, 1, 1, "", "send_otp_stock_monitor"], [1, 1, 1, "", "stock_monitor_api"]], "jarvis.api.routers.surveillance": [[1, 1, 1, "", "authenticate_surveillance"], [1, 1, 1, "", "monitor"], [1, 1, 1, "", "video_feed"], [1, 1, 1, "", "websocket_endpoint"]], "jarvis.api.server": [[1, 2, 1, "", "APIServer"], [1, 1, 1, "", "fast_api"]], "jarvis.api.server.APIServer": [[1, 4, 1, "", "install_signal_handlers"], [1, 4, 1, "", "run_in_parallel"]], "jarvis.api.squire": [[1, 0, 0, "-", "discover"], [1, 0, 0, "-", "logger"], [1, 0, 0, "-", "scheduler"], [1, 0, 0, "-", "stockmonitor_squire"], [1, 0, 0, "-", "surveillance_squire"], [1, 0, 0, "-", "timeout_otp"]], "jarvis.api.squire.discover": [[1, 2, 1, "", "Entrypoint"], [1, 1, 1, "", "get_entrypoints"], [1, 1, 1, "", "routes"]], "jarvis.api.squire.scheduler": [[1, 2, 1, "", "MarketHours"], [1, 1, 1, "", "rh_cron_schedule"], [1, 1, 1, "", "sm_cron_schedule"]], "jarvis.api.squire.stockmonitor_squire": [[1, 1, 1, "", "cleanup_stock_userdata"], [1, 1, 1, "", "delete_stock_userdata"], [1, 1, 1, "", "get_stock_userdata"], [1, 1, 1, "", "insert_stock_userdata"], [1, 1, 1, "", "nasdaq"], [1, 1, 1, "", "thread_worker"], [1, 1, 1, "", "ticker_gatherer"]], "jarvis.api.squire.surveillance_squire": [[1, 1, 1, "", "gen_frames"], [1, 1, 1, "", "generate_error_frame"], [1, 1, 1, "", "streamer"], [1, 1, 1, "", "test_camera"]], "jarvis.api.squire.timeout_otp": [[1, 1, 1, "", "reset_robinhood"], [1, 1, 1, "", "reset_stock_monitor"], [1, 1, 1, "", "reset_surveillance"]], "jarvis.api.triggers": [[1, 0, 0, "-", "stock_monitor"], [1, 0, 0, "-", "stock_report"]], "jarvis.api.triggers.stock_monitor": [[1, 2, 1, "", "StockMonitor"], [1, 1, 1, "", "generate_graph"]], "jarvis.api.triggers.stock_monitor.StockMonitor": [[1, 4, 1, "", "closest_maximum"], [1, 4, 1, "", "closest_minimum"], [1, 4, 1, "", "get_prices"], [1, 4, 1, "", "group_data"], [1, 4, 1, "", "send_notification"]], "jarvis.api.triggers.stock_report": [[1, 2, 1, "", "Investment"]], "jarvis.api.triggers.stock_report.Investment": [[1, 4, 1, "", "gatherer"], [1, 4, 1, "", "report_gatherer"], [1, 4, 1, "", "watcher"], [1, 4, 1, "", "watchlist"]], "jarvis.executors": [[1, 0, 0, "-", "alarm"], [1, 0, 0, "-", "automation"], [1, 0, 0, "-", "background_task"], [1, 0, 0, "-", "car"], [1, 0, 0, "-", "comm_squire"], [1, 0, 0, "-", "commander"], [1, 0, 0, "-", "communicator"], [1, 0, 0, "-", "conditions"], [1, 0, 0, "-", "connection"], [1, 0, 0, "-", "controls"], [1, 0, 0, "-", "crontab"], [1, 0, 0, "-", "date_time"], [1, 0, 0, "-", "display_functions"], [1, 0, 0, "-", "face"], [1, 0, 0, "-", "files"], [1, 0, 0, "-", "github"], [1, 0, 0, "-", "guard"], [1, 0, 0, "-", "internet"], [1, 0, 0, "-", "ios_functions"], [1, 0, 0, "-", "lights"], [1, 0, 0, "-", "lights_squire"], [1, 0, 0, "-", "listener_controls"], [1, 0, 0, "-", "location"], [1, 0, 0, "-", "myq_controller"], [1, 0, 0, "-", "offline"], [1, 0, 0, "-", "others"], [1, 0, 0, "-", "port_handler"], [1, 0, 0, "-", "processor"], [1, 0, 0, "-", "remind"], [1, 0, 0, "-", "robinhood"], [1, 0, 0, "-", "simulator"], [1, 0, 0, "-", "system"], [1, 0, 0, "-", "telegram"], [1, 0, 0, "-", "todo_list"], [1, 0, 0, "-", "tv"], [1, 0, 0, "-", "tv_controls"], [1, 0, 0, "-", "unconditional"], [1, 0, 0, "-", "volume"], [1, 0, 0, "-", "vpn_server"], [1, 0, 0, "-", "weather"], [1, 0, 0, "-", "wiki"], [1, 0, 0, "-", "word_match"]], "jarvis.executors.alarm": [[1, 1, 1, "", "create_alarm"], [1, 1, 1, "", "executor"], [1, 1, 1, "", "kill_alarm"], [1, 1, 1, "", "set_alarm"]], "jarvis.executors.automation": [[1, 1, 1, "", "auto_helper"], [1, 1, 1, "", "automation_handler"], [1, 1, 1, "", "rewrite_automator"]], "jarvis.executors.background_task": [[1, 1, 1, "", "background_task_handler"], [1, 1, 1, "", "compare_tasks"], [1, 1, 1, "", "remove_corrupted"], [1, 1, 1, "", "validate_tasks"]], "jarvis.executors.car": [[1, 2, 1, "", "Operations"], [1, 1, 1, "", "car"], [1, 1, 1, "", "convert_dt_report"], [1, 1, 1, "", "current_set_temperature"], [1, 1, 1, "", "report"], [1, 1, 1, "", "vehicle"]], "jarvis.executors.car.Operations": [[1, 4, 1, "", "enable_guard"], [1, 4, 1, "", "honk"], [1, 4, 1, "", "locate"], [1, 4, 1, "", "lock"], [1, 4, 1, "", "report"], [1, 4, 1, "", "turn_off"], [1, 4, 1, "", "turn_on"], [1, 4, 1, "", "unlock"]], "jarvis.executors.comm_squire": [[1, 1, 1, "", "extract_contacts"], [1, 1, 1, "", "initiate_email"], [1, 1, 1, "", "initiate_sms"], [1, 1, 1, "", "send_notification"]], "jarvis.executors.commander": [[1, 1, 1, "", "delay_condition"], [1, 1, 1, "", "initialize"], [1, 1, 1, "", "initiator"], [1, 1, 1, "", "renew"], [1, 1, 1, "", "split_phrase"], [1, 1, 1, "", "timed_delay"]], "jarvis.executors.communicator": [[1, 1, 1, "", "read_gmail"], [1, 1, 1, "", "send_email"], [1, 1, 1, "", "send_sms"]], "jarvis.executors.conditions": [[1, 1, 1, "", "conditions"]], "jarvis.executors.connection": [[1, 1, 1, "", "wifi_connector"]], "jarvis.executors.controls": [[1, 1, 1, "", "delete_docker_container"], [1, 1, 1, "", "delete_logs"], [1, 1, 1, "", "delete_pycache"], [1, 1, 1, "", "exit_process"], [1, 1, 1, "", "restart"], [1, 1, 1, "", "restart_control"], [1, 1, 1, "", "sentry"], [1, 1, 1, "", "set_executable"], [1, 1, 1, "", "shutdown"], [1, 1, 1, "", "sleep_control"], [1, 1, 1, "", "starter"], [1, 1, 1, "", "stop_terminals"], [1, 1, 1, "", "terminator"]], "jarvis.executors.crontab": [[1, 1, 1, "", "crontab_executor"]], "jarvis.executors.date_time": [[1, 1, 1, "", "current_date"], [1, 1, 1, "", "current_time"]], "jarvis.executors.display_functions": [[1, 1, 1, "", "brightness"]], "jarvis.executors.face": [[1, 1, 1, "", "detected_face"], [1, 1, 1, "", "faces"]], "jarvis.executors.files": [[1, 1, 1, "", "get_contacts"], [1, 1, 1, "", "get_frequent"], [1, 1, 1, "", "get_location"], [1, 1, 1, "", "put_frequent"]], "jarvis.executors.github": [[1, 1, 1, "", "github"], [1, 1, 1, "", "github_controller"]], "jarvis.executors.guard": [[1, 1, 1, "", "get_state"], [1, 1, 1, "", "guard_disable"], [1, 1, 1, "", "guard_enable"], [1, 1, 1, "", "politely_disable"], [1, 1, 1, "", "put_state"], [1, 1, 1, "", "security_runner"], [1, 1, 1, "", "stop_and_respond"], [1, 1, 1, "", "threat_notify"]], "jarvis.executors.internet": [[1, 1, 1, "", "get_connection_info"], [1, 1, 1, "", "ip_address"], [1, 1, 1, "", "ip_info"], [1, 1, 1, "", "public_ip_info"], [1, 1, 1, "", "speed_test"], [1, 1, 1, "", "vpn_checker"]], "jarvis.executors.ios_functions": [[1, 1, 1, "", "device_selector"], [1, 1, 1, "", "locate"], [1, 1, 1, "", "locate_device"], [1, 1, 1, "", "location_services"]], "jarvis.executors.lights": [[1, 2, 1, "", "ThreadExecutor"], [1, 1, 1, "", "cool"], [1, 1, 1, "", "lights"], [1, 1, 1, "", "lumen"], [1, 1, 1, "", "turn_off"], [1, 1, 1, "", "warm"]], "jarvis.executors.lights.ThreadExecutor": [[1, 4, 1, "", "avail_check"], [1, 4, 1, "", "thread_worker"]], "jarvis.executors.lights_squire": [[1, 1, 1, "", "check_status"], [1, 1, 1, "", "party_mode"], [1, 1, 1, "", "preset"], [1, 1, 1, "", "remove_status"], [1, 1, 1, "", "runner"], [1, 1, 1, "", "update_status"]], "jarvis.executors.listener_controls": [[1, 1, 1, "", "get_listener_state"], [1, 1, 1, "", "listener_control"], [1, 1, 1, "", "put_listener_state"]], "jarvis.executors.location": [[1, 1, 1, "", "directions"], [1, 1, 1, "", "distance"], [1, 1, 1, "", "distance_controller"], [1, 1, 1, "", "get_coordinates_from_ip"], [1, 1, 1, "", "get_location_from_coordinates"], [1, 1, 1, "", "locate_places"], [1, 1, 1, "", "location"], [1, 1, 1, "", "write_current_location"]], "jarvis.executors.myq_controller": [[1, 2, 1, "", "AsyncThread"], [1, 1, 1, "", "garage"], [1, 1, 1, "", "run_async"]], "jarvis.executors.myq_controller.AsyncThread": [[1, 4, 1, "", "run"]], "jarvis.executors.offline": [[1, 1, 1, "", "background_tasks"], [1, 1, 1, "", "get_tunnel"], [1, 1, 1, "", "offline_communicator"], [1, 1, 1, "", "on_demand_offline_automation"], [1, 1, 1, "", "tunneling"]], "jarvis.executors.others": [[1, 1, 1, "", "abusive"], [1, 1, 1, "", "apps"], [1, 1, 1, "", "facts"], [1, 1, 1, "", "flip_a_coin"], [1, 1, 1, "", "google_home"], [1, 1, 1, "", "jokes"], [1, 1, 1, "", "meaning"], [1, 1, 1, "", "music"], [1, 1, 1, "", "news"], [1, 1, 1, "", "notes"], [1, 1, 1, "", "photo"], [1, 1, 1, "", "pypi_versions"], [1, 1, 1, "", "repeat"], [1, 1, 1, "", "report"], [1, 1, 1, "", "time_travel"], [1, 1, 1, "", "version"]], "jarvis.executors.port_handler": [[1, 1, 1, "", "is_port_in_use"], [1, 1, 1, "", "kill_port_pid"]], "jarvis.executors.processor": [[1, 1, 1, "", "clear_db"], [1, 1, 1, "", "create_process_mapping"], [1, 1, 1, "", "delete_db"], [1, 1, 1, "", "start_processes"], [1, 1, 1, "", "stop_child_processes"], [1, 1, 1, "", "stop_processes"]], "jarvis.executors.remind": [[1, 1, 1, "", "create_reminder"], [1, 1, 1, "", "executor"], [1, 1, 1, "", "find_name"], [1, 1, 1, "", "reminder"]], "jarvis.executors.robinhood": [[1, 1, 1, "", "robinhood"], [1, 1, 1, "", "watcher"]], "jarvis.executors.simulator": [[1, 1, 1, "", "get_simulation_data"], [1, 1, 1, "", "initiate_simulator"], [1, 1, 1, "", "run_simulation"]], "jarvis.executors.system": [[1, 1, 1, "", "get_distributor_info_linux"], [1, 1, 1, "", "hosted_device_info"], [1, 1, 1, "", "system_info"], [1, 1, 1, "", "system_vitals"]], "jarvis.executors.telegram": [[1, 1, 1, "", "telegram_api"]], "jarvis.executors.todo_list": [[1, 1, 1, "", "add_todo"], [1, 1, 1, "", "delete_todo"], [1, 1, 1, "", "delete_todo_items"], [1, 1, 1, "", "get_todo"], [1, 1, 1, "", "todo"]], "jarvis.executors.tv": [[1, 1, 1, "", "television"], [1, 1, 1, "", "tv_status"]], "jarvis.executors.tv_controls": [[1, 1, 1, "", "tv_controller"]], "jarvis.executors.unconditional": [[1, 1, 1, "", "alpha"], [1, 1, 1, "", "google_maps"]], "jarvis.executors.volume": [[1, 1, 1, "", "main_volume"], [1, 1, 1, "", "speaker_volume"], [1, 1, 1, "", "volume"]], "jarvis.executors.vpn_server": [[1, 1, 1, "", "extract_custom_region"], [1, 1, 1, "", "regional_phrase"], [1, 1, 1, "", "vpn_server"], [1, 1, 1, "", "vpn_server_switch"]], "jarvis.executors.weather": [[1, 1, 1, "", "weather"]], "jarvis.executors.wiki": [[1, 1, 1, "", "wikipedia_"]], "jarvis.executors.word_match": [[1, 1, 1, "", "forward_lookup"], [1, 1, 1, "", "reverse_lookup"], [1, 1, 1, "", "word_match"]], "jarvis": [[1, 0, 0, "-", "main"]], "jarvis.main": [[1, 2, 1, "", "Activator"], [1, 1, 1, "", "restart_checker"], [1, 1, 1, "", "start"]], "jarvis.main.Activator": [[1, 4, 1, "", "executor"], [1, 4, 1, "", "open_stream"], [1, 4, 1, "", "start"], [1, 4, 1, "", "stop"]], "jarvis.modules.audio": [[1, 0, 0, "-", "listener"], [1, 0, 0, "-", "speaker"], [1, 0, 0, "-", "speech_synthesis"], [1, 0, 0, "-", "tts_stt"], [1, 0, 0, "-", "voices"]], "jarvis.modules.audio.listener": [[1, 1, 1, "", "listen"]], "jarvis.modules.audio.speaker": [[1, 1, 1, "", "frequently_used"], [1, 1, 1, "", "speak"], [1, 1, 1, "", "speech_synthesizer"]], "jarvis.modules.audio.speech_synthesis": [[1, 1, 1, "", "check_existing"], [1, 1, 1, "", "speech_synthesizer"]], "jarvis.modules.audio.tts_stt": [[1, 1, 1, "", "audio_to_text"], [1, 1, 1, "", "generate_audio_file"], [1, 1, 1, "", "text_to_audio"]], "jarvis.modules.audio.voices": [[1, 1, 1, "", "voice_changer"], [1, 1, 1, "", "voice_default"]], "jarvis.modules": [[1, 0, 0, "-", "auth_bearer"], [1, 0, 0, "-", "exceptions"], [1, 0, 0, "-", "peripherals"]], "jarvis.modules.auth_bearer": [[1, 2, 1, "", "BearerAuth"]], "jarvis.modules.camera": [[1, 0, 0, "-", "camera"]], "jarvis.modules.camera.camera": [[1, 2, 1, "", "Camera"], [1, 1, 1, "", "list_splitter"]], "jarvis.modules.camera.camera.Camera": [[1, 4, 1, "", "_get_camera_info_darwin"], [1, 4, 1, "", "_get_camera_info_linux"], [1, 4, 1, "", "_get_camera_info_windows"], [1, 4, 1, "", "_list_cameras_darwin"], [1, 4, 1, "", "_list_cameras_linux"], [1, 4, 1, "", "_list_cameras_windows"], [1, 4, 1, "", "get_camera_info"], [1, 4, 1, "", "get_index"], [1, 4, 1, "", "list_cameras"]], "jarvis.modules.car": [[1, 0, 0, "-", "connector"], [1, 0, 0, "-", "controller"]], "jarvis.modules.car.connector": [[1, 2, 1, "", "Connect"], [1, 1, 1, "", "_open"]], "jarvis.modules.car.connector.Connect": [[1, 4, 1, "", "_authenticate"], [1, 4, 1, "", "_login_user"], [1, 4, 1, "", "_register_auth"], [1, 4, 1, "", "_register_device"], [1, 4, 1, "", "_register_device_and_log_in"], [1, 4, 1, "", "_set_header"], [1, 4, 1, "", "connect"], [1, 4, 1, "", "get_user_info"], [1, 4, 1, "", "get_vehicles"], [1, 4, 1, "", "post_data"], [1, 4, 1, "", "refresh_tokens"], [1, 4, 1, "", "update_user_info"]], "jarvis.modules.car.controller": [[1, 2, 1, "", "Control"]], "jarvis.modules.car.controller.Control": [[1, 4, 1, "", "_authenticate_service"], [1, 4, 1, "", "_authenticate_vin_protected_service"], [1, 4, 1, "", "_charging_profile_control"], [1, 4, 1, "", "_preconditioning_control"], [1, 4, 1, "", "_prov_command"], [1, 4, 1, "", "_set_wakeup"], [1, 4, 1, "", "add_charging_period"], [1, 4, 1, "", "add_departure_timer"], [1, 4, 1, "", "add_repeated_departure_timer"], [1, 4, 1, "", "charging_start"], [1, 4, 1, "", "charging_stop"], [1, 4, 1, "", "climate_prioritize"], [1, 4, 1, "", "delete_departure_timer"], [1, 4, 1, "", "delete_wakeup_time"], [1, 4, 1, "", "disable_privacy_mode"], [1, 4, 1, "", "enable_guardian_mode"], [1, 4, 1, "", "enable_privacy_mode"], [1, 4, 1, "", "enable_service_mode"], [1, 4, 1, "", "enable_transport_mode"], [1, 4, 1, "", "get_attributes"], [1, 4, 1, "", "get_contact_info"], [1, 4, 1, "", "get_departure_timers"], [1, 4, 1, "", "get_guardian_mode_alarms"], [1, 4, 1, "", "get_guardian_mode_alerts"], [1, 4, 1, "", "get_guardian_mode_settings_system"], [1, 4, 1, "", "get_guardian_mode_settings_user"], [1, 4, 1, "", "get_guardian_mode_status"], [1, 4, 1, "", "get_health_status"], [1, 4, 1, "", "get_position"], [1, 4, 1, "", "get_rcc_target_value"], [1, 4, 1, "", "get_service_status"], [1, 4, 1, "", "get_services"], [1, 4, 1, "", "get_status"], [1, 4, 1, "", "get_subscription_packages"], [1, 4, 1, "", "get_trip"], [1, 4, 1, "", "get_trips"], [1, 4, 1, "", "get_wakeup_time"], [1, 4, 1, "", "honk_blink"], [1, 4, 1, "", "lock"], [1, 4, 1, "", "post_data"], [1, 4, 1, "", "preconditioning_start"], [1, 4, 1, "", "preconditioning_stop"], [1, 4, 1, "", "remote_engine_start"], [1, 4, 1, "", "remote_engine_stop"], [1, 4, 1, "", "reset_alarm"], [1, 4, 1, "", "set_attributes"], [1, 4, 1, "", "set_max_soc"], [1, 4, 1, "", "set_one_off_max_soc"], [1, 4, 1, "", "set_rcc_target_temperature"], [1, 4, 1, "", "set_wakeup_time"], [1, 4, 1, "", "unlock"]], "jarvis.modules.conditions": [[1, 0, 0, "-", "conversation"], [1, 0, 0, "-", "keywords"], [1, 0, 0, "-", "keywords_base"]], "jarvis.modules.conditions.keywords": [[1, 2, 1, "", "Keywords"]], "jarvis.modules.conditions.keywords_base": [[1, 1, 1, "", "keyword_mapping"]], "jarvis.modules.crontab": [[1, 0, 0, "-", "expression"]], "jarvis.modules.crontab.expression": [[1, 2, 1, "", "CronExpression"], [1, 1, 1, "", "parse_atom"]], "jarvis.modules.crontab.expression.CronExpression": [[1, 3, 1, "", "DAYS_OF_MONTH"], [1, 3, 1, "", "DAYS_OF_WEEK"], [1, 3, 1, "", "DAY_NAMES"], [1, 3, 1, "", "DEFAULT_EPOCH"], [1, 3, 1, "", "FIELD_RANGES"], [1, 3, 1, "", "HOURS"], [1, 3, 1, "", "L_FIELDS"], [1, 3, 1, "", "MINUTES"], [1, 3, 1, "", "MONTHS"], [1, 3, 1, "", "MONTH_NAMES"], [1, 3, 1, "", "SUBSTITUTIONS"], [1, 4, 1, "", "check_trigger"], [1, 4, 1, "", "compute_numtab"]], "jarvis.modules.database": [[1, 0, 0, "-", "database"]], "jarvis.modules.database.database": [[1, 2, 1, "", "Database"], [1, 2, 1, "", "__TestDatabase"]], "jarvis.modules.database.database.Database": [[1, 4, 1, "", "create_table"]], "jarvis.modules.database.database.__TestDatabase": [[1, 4, 1, "", "random_double"], [1, 4, 1, "", "random_single"]], "jarvis.modules.dictionary": [[1, 0, 0, "-", "dictionary"]], "jarvis.modules.dictionary.dictionary": [[1, 1, 1, "", "meaning"]], "jarvis.modules.exceptions": [[1, 5, 1, "", "APIResponse"], [1, 5, 1, "", "BotInUse"], [1, 5, 1, "", "CameraError"], [1, 5, 1, "", "CoverNotOnline"], [1, 5, 1, "", "InvalidArgument"], [1, 5, 1, "", "InvalidEnvVars"], [1, 5, 1, "", "MissingEnvVars"], [1, 5, 1, "", "NoCoversFound"], [1, 5, 1, "", "StopSignal"], [1, 5, 1, "", "TVError"], [1, 5, 1, "", "UnsupportedOS"], [1, 1, 1, "", "no_alsa_err"], [1, 1, 1, "", "py_error_handler"]], "jarvis.modules.facenet": [[1, 0, 0, "-", "face"]], "jarvis.modules.facenet.face": [[1, 2, 1, "", "FaceNet"], [1, 1, 1, "", "condition_check"], [1, 1, 1, "", "verify_image"]], "jarvis.modules.facenet.face.FaceNet": [[1, 3, 1, "", "LEARNING_RATE"], [1, 3, 1, "", "MODEL"], [1, 4, 1, "", "capture_image"], [1, 4, 1, "", "face_detection"], [1, 4, 1, "", "face_recognition"], [1, 4, 1, "", "load_dataset"]], "jarvis.modules.lights": [[1, 0, 0, "-", "preset_values"], [1, 0, 0, "-", "smart_lights"]], "jarvis.modules.lights.smart_lights": [[1, 2, 1, "", "MagicHomeApi"], [1, 1, 1, "", "calculate_checksum"], [1, 1, 1, "", "check_number_range"]], "jarvis.modules.lights.smart_lights.MagicHomeApi": [[1, 3, 1, "", "API_PORT"], [1, 4, 1, "", "get_status"], [1, 4, 1, "", "send_bytes"], [1, 4, 1, "", "send_preset_function"], [1, 4, 1, "", "turn_off"], [1, 4, 1, "", "turn_on"], [1, 4, 1, "", "update_device"]], "jarvis.modules.logger.config": [[1, 2, 1, "", "APIConfig"], [1, 2, 1, "", "AddProcessName"], [1, 2, 1, "", "multiprocessing_logger"]], "jarvis.modules.logger.config.AddProcessName": [[1, 4, 1, "", "filter"]], "jarvis.modules.logger": [[1, 0, 0, "-", "custom_logger"]], "jarvis.modules.logger.custom_logger": [[1, 2, 1, "", "TestLogger"], [1, 1, 1, "", "custom_handler"], [1, 1, 1, "", "log_file"]], "jarvis.modules.logger.custom_logger.TestLogger": [[1, 4, 1, "", "custom_time"], [1, 4, 1, "", "test_log"]], "jarvis.modules.meetings": [[1, 0, 0, "-", "events"], [1, 0, 0, "-", "ics"], [1, 0, 0, "-", "ics_meetings"]], "jarvis.modules.meetings.events": [[1, 1, 1, "", "event_app_launcher"], [1, 1, 1, "", "events"], [1, 1, 1, "", "events_gatherer"], [1, 1, 1, "", "events_writer"]], "jarvis.modules.meetings.ics": [[1, 2, 1, "", "ICS"], [1, 1, 1, "", "all_day_event"], [1, 1, 1, "", "convert_to_local_tz"], [1, 1, 1, "", "parse_calendar"]], "jarvis.modules.meetings.ics.ICS": [[1, 3, 1, "", "all_day"], [1, 3, 1, "", "duration"], [1, 3, 1, "", "end"], [1, 3, 1, "", "start"], [1, 3, 1, "", "summary"]], "jarvis.modules.meetings.ics_meetings": [[1, 1, 1, "", "custom_meetings"], [1, 1, 1, "", "meetings"], [1, 1, 1, "", "meetings_gatherer"], [1, 1, 1, "", "meetings_writer"]], "jarvis.modules.microphone": [[1, 0, 0, "-", "graph_mic"], [1, 0, 0, "-", "recognizer"]], "jarvis.modules.microphone.graph_mic": [[1, 2, 1, "", "Settings"], [1, 1, 1, "", "_kick_off"], [1, 1, 1, "", "audio_callback"], [1, 1, 1, "", "list_devices"], [1, 1, 1, "", "plot_mic"], [1, 1, 1, "", "update_plot"]], "jarvis.modules.microphone.graph_mic.Settings": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "dark_mode"], [1, 3, 1, "", "device"], [1, 3, 1, "", "down_sample"], [1, 3, 1, "", "interval"], [1, 3, 1, "", "lines"], [1, 3, 1, "", "mapping"], [1, 3, 1, "", "plot_data"], [1, 3, 1, "", "rate"], [1, 3, 1, "", "samplerate"], [1, 3, 1, "", "window"], [1, 3, 1, "", "window_size"]], "jarvis.modules.microphone.recognizer": [[1, 1, 1, "", "main"], [1, 1, 1, "", "save_for_reference"]], "jarvis.modules.models.classes": [[1, 2, 1, "", "BackgroundTask"], [1, 2, 1, "", "EnvConfig"], [1, 2, 1, "", "EventApp"], [1, 2, 1, "", "FileIO"], [1, 2, 1, "", "Indicators"], [1, 2, 1, "", "RecognizerSettings"], [1, 2, 1, "", "SSQuality"], [1, 2, 1, "", "Sensitivity"], [1, 2, 1, "", "Settings"]], "jarvis.modules.models.classes.BackgroundTask": [[1, 3, 1, "", "_abc_impl"], [1, 4, 1, "", "check_empty_string"], [1, 4, 1, "", "check_hours_format"], [1, 3, 1, "", "ignore_hours"], [1, 3, 1, "", "seconds"], [1, 3, 1, "", "task"]], "jarvis.modules.models.classes.EnvConfig": [[1, 2, 1, "", "Config"], [1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "author_mode"], [1, 3, 1, "", "birthday"], [1, 3, 1, "", "bot_chat_ids"], [1, 3, 1, "", "bot_token"], [1, 3, 1, "", "bot_users"], [1, 3, 1, "", "camera_index"], [1, 3, 1, "", "car_email"], [1, 3, 1, "", "car_pass"], [1, 3, 1, "", "car_pin"], [1, 3, 1, "", "connection_retry"], [1, 3, 1, "", "crontab"], [1, 3, 1, "", "debug"], [1, 3, 1, "", "event_app"], [1, 3, 1, "", "git_pass"], [1, 3, 1, "", "git_user"], [1, 3, 1, "", "gmail_pass"], [1, 3, 1, "", "gmail_user"], [1, 3, 1, "", "home"], [1, 3, 1, "", "icloud_pass"], [1, 3, 1, "", "icloud_recovery"], [1, 3, 1, "", "icloud_user"], [1, 3, 1, "", "ics_url"], [1, 3, 1, "", "limited"], [1, 3, 1, "", "log_retention"], [1, 3, 1, "", "maps_api"], [1, 3, 1, "", "microphone_index"], [1, 3, 1, "", "mute_for_meetings"], [1, 3, 1, "", "myq_password"], [1, 3, 1, "", "myq_username"], [1, 3, 1, "", "name"], [1, 3, 1, "", "news_api"], [1, 3, 1, "", "offline_host"], [1, 3, 1, "", "offline_pass"], [1, 3, 1, "", "offline_port"], [1, 3, 1, "", "open_gmail_pass"], [1, 3, 1, "", "open_gmail_user"], [1, 4, 1, "", "parse_birthday"], [1, 4, 1, "", "parse_microphone_index"], [1, 4, 1, "", "parse_speaker_index"], [1, 3, 1, "", "phone_number"], [1, 3, 1, "", "phrase_limit"], [1, 3, 1, "", "plot_mic"], [1, 3, 1, "", "recipient"], [1, 3, 1, "", "recognizer_settings"], [1, 3, 1, "", "robinhood_endpoint_auth"], [1, 3, 1, "", "robinhood_pass"], [1, 3, 1, "", "robinhood_qr"], [1, 3, 1, "", "robinhood_user"], [1, 3, 1, "", "root_password"], [1, 3, 1, "", "root_user"], [1, 3, 1, "", "sensitivity"], [1, 3, 1, "", "speaker_index"], [1, 3, 1, "", "speech_synthesis_host"], [1, 3, 1, "", "speech_synthesis_port"], [1, 3, 1, "", "speech_synthesis_quality"], [1, 3, 1, "", "speech_synthesis_timeout"], [1, 3, 1, "", "speech_synthesis_voice"], [1, 3, 1, "", "stock_monitor_api"], [1, 3, 1, "", "surveillance_endpoint_auth"], [1, 3, 1, "", "surveillance_session_timeout"], [1, 3, 1, "", "sync_events"], [1, 3, 1, "", "sync_meetings"], [1, 3, 1, "", "timeout"], [1, 3, 1, "", "title"], [1, 3, 1, "", "voice_name"], [1, 3, 1, "", "voice_rate"], [1, 3, 1, "", "volume"], [1, 3, 1, "", "vpn_domain"], [1, 3, 1, "", "vpn_password"], [1, 3, 1, "", "vpn_record_name"], [1, 3, 1, "", "vpn_username"], [1, 3, 1, "", "wake_words"], [1, 3, 1, "", "weather_api"], [1, 3, 1, "", "website"], [1, 3, 1, "", "wifi_password"], [1, 3, 1, "", "wifi_ssid"], [1, 3, 1, "", "wolfram_api"], [1, 3, 1, "", "workers"]], "jarvis.modules.models.classes.EnvConfig.Config": [[1, 3, 1, "", "env_file"], [1, 3, 1, "", "env_prefix"]], "jarvis.modules.models.classes.EventApp": [[1, 3, 1, "", "CALENDAR"], [1, 3, 1, "", "OUTLOOK"], [1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"]], "jarvis.modules.models.classes.FileIO": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "app_launcher"], [1, 3, 1, "", "automation"], [1, 3, 1, "", "background_tasks"], [1, 3, 1, "", "base_db"], [1, 3, 1, "", "contacts"], [1, 3, 1, "", "event_script"], [1, 3, 1, "", "frequent"], [1, 3, 1, "", "location"], [1, 3, 1, "", "notes"], [1, 3, 1, "", "processes"], [1, 3, 1, "", "robinhood"], [1, 3, 1, "", "root"], [1, 3, 1, "", "simulation"], [1, 3, 1, "", "smart_devices"], [1, 3, 1, "", "speech_synthesis_id"], [1, 3, 1, "", "speech_synthesis_log"], [1, 3, 1, "", "speech_synthesis_wav"], [1, 3, 1, "", "stock_db"], [1, 3, 1, "", "stock_list_backup"], [1, 3, 1, "", "task_db"], [1, 3, 1, "", "tmp_automation"], [1, 3, 1, "", "tmp_background_tasks"], [1, 3, 1, "", "training_data"]], "jarvis.modules.models.classes.Indicators": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "acknowledgement"], [1, 3, 1, "", "alarm"], [1, 3, 1, "", "coin"], [1, 3, 1, "", "end"], [1, 3, 1, "", "exhaust"], [1, 3, 1, "", "start"], [1, 3, 1, "", "tv_connect"], [1, 3, 1, "", "tv_scan"]], "jarvis.modules.models.classes.RecognizerSettings": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "dynamic_energy_threshold"], [1, 3, 1, "", "energy_threshold"], [1, 3, 1, "", "non_speaking_duration"], [1, 3, 1, "", "pause_threshold"], [1, 3, 1, "", "phrase_threshold"]], "jarvis.modules.models.classes.SSQuality": [[1, 3, 1, "", "High_Quality"], [1, 3, 1, "", "Low_Quality"], [1, 3, 1, "", "Medium_Quality"], [1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"]], "jarvis.modules.models.classes.Sensitivity": [[1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"], [1, 3, 1, "", "sensitivity"]], "jarvis.modules.models.classes.Settings": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "bot"], [1, 3, 1, "", "invoker"], [1, 3, 1, "", "limited"], [1, 3, 1, "", "logical_cores"], [1, 3, 1, "", "os"], [1, 3, 1, "", "physical_cores"], [1, 3, 1, "", "pid"], [1, 3, 1, "", "ram"], [1, 3, 1, "", "wake_words"]], "jarvis.modules.models": [[1, 0, 0, "-", "models"]], "jarvis.modules.models.models": [[1, 1, 1, "", "_global_validations"], [1, 1, 1, "", "_main_process_validations"], [1, 1, 1, "", "_set_default_voice_name"]], "jarvis.modules.myq": [[1, 0, 0, "-", "myq"]], "jarvis.modules.myq.myq": [[1, 2, 1, "", "Operation"], [1, 1, 1, "", "garage_controller"], [1, 3, 1, "", "operation"]], "jarvis.modules.myq.myq.Operation": [[1, 3, 1, "", "CLOSE"], [1, 3, 1, "", "CLOSED"], [1, 3, 1, "", "CLOSING"], [1, 3, 1, "", "OPEN"], [1, 3, 1, "", "OPENING"], [1, 3, 1, "", "STATE"], [1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"]], "jarvis.modules.offline": [[1, 0, 0, "-", "compatibles"]], "jarvis.modules.offline.compatibles": [[1, 1, 1, "", "offline_compatible"]], "jarvis.modules.peripherals": [[1, 2, 1, "", "ChannelType"], [1, 3, 1, "", "channel_type"], [1, 1, 1, "", "get_audio_devices"]], "jarvis.modules.peripherals.ChannelType": [[1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"], [1, 3, 1, "", "input_channels"], [1, 3, 1, "", "output_channels"]], "jarvis.modules.retry": [[1, 0, 0, "-", "retry"]], "jarvis.modules.retry.retry": [[1, 1, 1, "", "retry"]], "jarvis.modules.speaker": [[1, 0, 0, "-", "speak"]], "jarvis.modules.speaker.speak": [[1, 2, 1, "", "Speaker"]], "jarvis.modules.speaker.speak.Speaker": [[1, 4, 1, "", "get_all_voices"], [1, 4, 1, "", "get_english_voices"], [1, 4, 1, "", "get_voice_by_gender"], [1, 4, 1, "", "get_voice_by_index"], [1, 4, 1, "", "get_voice_by_language"], [1, 4, 1, "", "get_voice_by_name"], [1, 4, 1, "", "run"], [1, 4, 1, "", "set_voice"], [1, 4, 1, "", "speak_all_voices"], [1, 4, 1, "", "speak_english_voices"]], "jarvis.modules.telegram": [[1, 0, 0, "-", "audio_handler"], [1, 0, 0, "-", "bot"], [1, 0, 0, "-", "file_handler"]], "jarvis.modules.telegram.audio_handler": [[1, 1, 1, "", "audio_converter_mac"], [1, 1, 1, "", "audio_converter_win"]], "jarvis.modules.telegram.bot": [[1, 2, 1, "", "TelegramBot"], [1, 1, 1, "", "get_title_by_name"], [1, 1, 1, "", "greeting"], [1, 1, 1, "", "intro"], [1, 1, 1, "", "username_is_valid"]], "jarvis.modules.telegram.bot.TelegramBot": [[1, 3, 1, "", "FILE_CONTENT_URL"], [1, 4, 1, "", "_get_file"], [1, 4, 1, "", "_make_request"], [1, 4, 1, "", "authenticate"], [1, 4, 1, "", "executor"], [1, 4, 1, "", "jarvis"], [1, 4, 1, "", "poll_for_messages"], [1, 4, 1, "", "process_document"], [1, 4, 1, "", "process_response"], [1, 4, 1, "", "process_text"], [1, 4, 1, "", "process_voice"], [1, 4, 1, "", "reply_to"], [1, 4, 1, "", "send_audio"], [1, 4, 1, "", "send_document"], [1, 4, 1, "", "send_message"], [1, 4, 1, "", "send_photo"], [1, 4, 1, "", "verify_stop"], [1, 4, 1, "", "verify_timeout"]], "jarvis.modules.telegram.file_handler": [[1, 1, 1, "", "_list_files"], [1, 1, 1, "", "get_file"], [1, 1, 1, "", "list_files"], [1, 1, 1, "", "put_file"]], "jarvis.modules.temperature": [[1, 0, 0, "-", "temperature"]], "jarvis.modules.temperature.temperature": [[1, 1, 1, "", "c2f"], [1, 1, 1, "", "c2k"], [1, 1, 1, "", "f2c"], [1, 1, 1, "", "f2k"], [1, 1, 1, "", "k2c"], [1, 1, 1, "", "k2f"]], "jarvis.modules.templates": [[1, 0, 0, "-", "templates"]], "jarvis.modules.templates.templates": [[1, 2, 1, "", "EmailTemplates"], [1, 2, 1, "", "GenericTemplates"], [1, 2, 1, "", "OriginTemplates"], [1, 3, 1, "", "email"], [1, 3, 1, "", "generic"], [1, 3, 1, "", "origin"]], "jarvis.modules.timeout": [[1, 0, 0, "-", "timeout"]], "jarvis.modules.timeout.timeout": [[1, 1, 1, "", "timeout"]], "jarvis.modules.tv": [[1, 0, 0, "-", "lg"], [1, 0, 0, "-", "roku"]], "jarvis.modules.tv.lg": [[1, 2, 1, "", "LGWebOS"]], "jarvis.modules.tv.lg.LGWebOS": [[1, 3, 1, "", "_init_status"], [1, 3, 1, "", "_reconnect"], [1, 4, 1, "", "audio_output"], [1, 4, 1, "", "audio_output_source"], [1, 4, 1, "", "close_app"], [1, 4, 1, "", "current_app"], [1, 4, 1, "", "decrease_volume"], [1, 4, 1, "", "forward"], [1, 4, 1, "", "get_apps"], [1, 4, 1, "", "get_sources"], [1, 4, 1, "", "get_volume"], [1, 4, 1, "", "increase_volume"], [1, 4, 1, "", "launch_app"], [1, 4, 1, "", "mute"], [1, 4, 1, "", "pause"], [1, 4, 1, "", "play"], [1, 4, 1, "", "rewind"], [1, 4, 1, "", "set_audio_output_source"], [1, 4, 1, "", "set_source"], [1, 4, 1, "", "set_volume"], [1, 4, 1, "", "shutdown"], [1, 4, 1, "", "stop"]], "jarvis.modules.tv.roku": [[1, 2, 1, "", "RokuECP"]], "jarvis.modules.tv.roku.RokuECP": [[1, 3, 1, "", "PORT"], [1, 3, 1, "", "SESSION"], [1, 4, 1, "", "_set_vol_executor"], [1, 4, 1, "", "current_app"], [1, 4, 1, "", "decrease_volume"], [1, 4, 1, "", "forward"], [1, 4, 1, "", "get_apps"], [1, 4, 1, "", "get_sources"], [1, 4, 1, "", "get_state"], [1, 4, 1, "", "get_volume"], [1, 4, 1, "", "increase_volume"], [1, 4, 1, "", "launch_app"], [1, 4, 1, "", "make_call"], [1, 4, 1, "", "mute"], [1, 4, 1, "", "pause"], [1, 4, 1, "", "play"], [1, 4, 1, "", "rewind"], [1, 4, 1, "", "set_source"], [1, 4, 1, "", "set_volume"], [1, 4, 1, "", "shutdown"], [1, 4, 1, "", "startup"], [1, 4, 1, "", "stop"]], "jarvis.modules.utils": [[1, 0, 0, "-", "shared"], [1, 0, 0, "-", "support"], [1, 0, 0, "-", "util"]], "jarvis.modules.utils.support": [[1, 1, 1, "", "build_lookup"], [1, 1, 1, "", "celebrate"], [1, 1, 1, "", "check_restart"], [1, 1, 1, "", "check_stop"], [1, 1, 1, "", "connected_to_network"], [1, 1, 1, "", "country_timezone"], [1, 1, 1, "", "detect_lookup_date"], [1, 1, 1, "", "exit_message"], [1, 1, 1, "", "flush_screen"], [1, 1, 1, "", "get_capitalized"], [1, 1, 1, "", "hostname_to_ip"], [1, 1, 1, "", "humanized_day_to_datetime"], [1, 1, 1, "", "lock_files"], [1, 1, 1, "", "no_env_vars"], [1, 1, 1, "", "number_to_words"], [1, 1, 1, "", "pluralize"], [1, 1, 1, "", "remove_file"], [1, 1, 1, "", "size_converter"], [1, 1, 1, "", "stop_process"], [1, 1, 1, "", "time_converter"], [1, 1, 1, "", "unrecognized_dumper"], [1, 1, 1, "", "unsupported_features"], [1, 1, 1, "", "utc_to_local"]], "jarvis.modules.utils.util": [[1, 2, 1, "", "Dict2Class"], [1, 1, 1, "", "block_print"], [1, 1, 1, "", "comma_separator"], [1, 1, 1, "", "delay_calculator"], [1, 1, 1, "", "extract_nos"], [1, 1, 1, "", "extract_str"], [1, 1, 1, "", "extract_time"], [1, 1, 1, "", "format_nos"], [1, 1, 1, "", "get_closest_match"], [1, 1, 1, "", "get_free_port"], [1, 1, 1, "", "get_timezone"], [1, 1, 1, "", "hashed"], [1, 1, 1, "", "keygen_str"], [1, 1, 1, "", "keygen_uuid"], [1, 1, 1, "", "kms_to_miles"], [1, 1, 1, "", "matrix_to_flat_list"], [1, 1, 1, "", "part_of_day"], [1, 1, 1, "", "release_print"], [1, 1, 1, "", "remove_duplicates"], [1, 1, 1, "", "token"], [1, 1, 1, "", "words_to_number"], [1, 1, 1, "", "write_screen"]], "jarvis.modules.wakeonlan": [[1, 0, 0, "-", "wakeonlan"]], "jarvis.modules.wakeonlan.wakeonlan": [[1, 2, 1, "", "WakeOnLan"]], "jarvis.modules.wakeonlan.wakeonlan.WakeOnLan": [[1, 3, 1, "", "BROADCAST_IP"], [1, 3, 1, "", "DEFAULT_PORT"], [1, 4, 1, "", "create_packet"], [1, 4, 1, "", "send_packet"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:attribute", "4": "py:method", "5": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "method", "Python method"], "5": ["py", "exception", "Python exception"]}, "titleterms": {"kick": 0, "off": 0, "prerequisit": 0, "test": [0, 1], "peripher": 0, "env": 0, "variabl": 0, "featur": 0, "background": [0, 1], "task": [0, 1], "contact": 0, "smart": 0, "devic": [0, 1], "autom": [0, 1], "setup": 0, "option": 0, "simul": [0, 1], "guid": 0, "faq": 0, "code": 0, "standard": 0, "releas": 0, "note": 0, "lint": 0, "pypi": 0, "packag": 0, "runbook": 0, "licens": 0, "copyright": 0, "welcom": 1, "jarvi": 1, "": 1, "document": 1, "read": 1, "me": 1, "preflight": 1, "camera": 1, "audio": 1, "text": 1, "To": 1, "speech": 1, "realtim": 1, "microphon": 1, "usag": 1, "main": 1, "modul": 1, "keyword": 1, "classifi": 1, "api": 1, "applic": 1, "server": 1, "modal": 1, "authent": 1, "model": 1, "set": 1, "router": 1, "basic": 1, "fileio": 1, "helper": 1, "invest": 1, "offlin": 1, "speechsynthesi": 1, "stockmonitor": 1, "surveil": 1, "squir": 1, "discov": 1, "logger": 1, "schedul": 1, "timeout": 1, "otp": 1, "trigger": 1, "stockreport": 1, "executor": 1, "alarm": 1, "car": 1, "commun": 1, "connect": 1, "condit": 1, "command": 1, "control": 1, "crontab": 1, "datetim": 1, "displayfunct": 1, "face": 1, "file": 1, "garag": 1, "door": 1, "github": 1, "guard": 1, "internet": 1, "io": 1, "function": 1, "light": 1, "listen": 1, "locat": 1, "other": 1, "port": 1, "handler": 1, "processor": 1, "remind": 1, "robinhood": 1, "system": 1, "telegram": 1, "do": 1, "tv": 1, "uncondit": 1, "volum": 1, "vpn": 1, "weather": 1, "word": 1, "match": 1, "wikipedia": 1, "auth": 1, "bearer": 1, "class": 1, "databas": 1, "except": 1, "facenet": 1, "config": 1, "mean": 1, "meet": 1, "myq": 1, "retri": 1, "share": 1, "resourc": 1, "support": 1, "util": 1, "temperatur": 1, "templat": 1, "connector": 1, "wakeonlan": 1, "indic": 1, "tabl": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}})
\ No newline at end of file
+Search.setIndex({"docnames": ["README", "index"], "filenames": ["README.md", "index.rst"], "titles": ["Kick off", "Welcome to Jarvis\u2019s documentation!"], "terms": {"fulli": [0, 1], "function": 0, "voic": [0, 1], "base": [0, 1], "natur": 0, "languag": [0, 1], "ui": [0, 1], "platform": 0, "support": 0, "stat": 0, "repo": 0, "deploy": 0, "activ": [0, 1], "develop": [0, 1], "mainten": 0, "reach": 0, "out": [0, 1], "instal": [0, 1], "python": [0, 1], "m": [0, 1], "pip": 0, "jarvi": 0, "ironman": 0, "initi": [0, 1], "import": [0, 1], "__name__": 0, "__main__": 0, "start": [0, 1], "maco": [0, 1], "high": [0, 1], "sierra": 0, "mojav": 0, "catalina": 0, "big": 0, "sur": 0, "monterei": 0, "ventura": [0, 1], "system": 0, "prefer": [0, 1], "secur": [0, 1], "privaci": [0, 1], "click": 0, "sign": [0, 1], "add": [0, 1], "id": [0, 1], "termin": [0, 1], "follow": [0, 1], "section": 0, "left": 0, "pane": 0, "microphon": 0, "requir": [0, 1], "listen": 0, "respond": [0, 1], "access": [0, 1], "us": [0, 1], "kei": [0, 1], "combin": 0, "bright": [0, 1], "volum": 0, "control": 0, "camera": 0, "onli": [0, 1], "dure": [0, 1], "face": 0, "recognit": [0, 1], "detect": [0, 1], "event": [0, 1], "other": 0, "app": [0, 1], "like": [0, 1], "outlook": [0, 1], "calendar": [0, 1], "file": 0, "folder": [0, 1], "OR": 0, "full": [0, 1], "disk": 0, "all": [0, 1], "fileio": 0, "oper": [0, 1], "linux": [0, 1], "ubuntu": [0, 1], "22": [0, 1], "04": 0, "lt": 0, "store": [0, 1], "host": [0, 1], "machin": [0, 1], "": 0, "password": [0, 1], "var": [0, 1], "root_password": [0, 1], "unlik": 0, "window": [0, 1], "doe": [0, 1], "have": [0, 1], "specif": [0, 1], "permiss": [0, 1], "10": [0, 1], "set": 0, "pop": 0, "confirm": [0, 1], "allow": [0, 1], "deni": 0, "anaconda": 0, "miniconda": 0, "visualstudio": 0, "c": 0, "buildtool": 0, "git": 0, "make": [0, 1], "sure": 0, "build": [0, 1], "tool": 0, "ar": [0, 1], "complet": [0, 1], "restart": [0, 1], "script": [0, 1], "locat": 0, "path": [0, 1], "environ": [0, 1], "from": [0, 1], "modul": 0, "cam_object": 0, "print": [0, 1], "get_index": [0, 1], "get": [0, 1], "index": [0, 1], "each": [0, 1], "list_camera": [0, 1], "list": [0, 1], "connect": 0, "text": 0, "speech": 0, "speaker": [0, 1], "speak": [0, 1], "speak_object": 0, "run": [0, 1], "get_all_voic": [0, 1], "asyncio": [0, 1], "recogn": [0, 1], "main": 0, "load": [0, 1], "valid": [0, 1], "pydant": [0, 1], "more": [0, 1], "root": [0, 1], "_": 0, "vital": [0, 1], "sudo": 0, "command": 0, "mandatori": 0, "name": [0, 1], "which": [0, 1], "should": [0, 1], "address": [0, 1], "user": [0, 1], "default": [0, 1], "vignesh": [0, 1], "titl": [0, 1], "sir": [0, 1], "plot": [0, 1], "mic": 0, "boolean": [0, 1], "valu": [0, 1], "whether": [0, 1], "show": [0, 1], "usag": 0, "realtim": 0, "true": [0, 1], "log": [0, 1], "retent": [0, 1], "number": [0, 1], "dai": [0, 1], "wake": [0, 1], "word": 0, "alexa": 0, "legaci": [0, 1], "warn": [0, 1], "ha": [0, 1], "limit": [0, 1], "reli": [0, 1], "ml": 0, "librari": [0, 1], "operatingsystem": 0, "author": [0, 1], "favorit": 0, "rate": [0, 1], "speed": [0, 1], "spoken": [0, 1], "pyttsx3": 0, "typic": [0, 1], "200": [0, 1], "To": 0, "content": [0, 1], "manag": [0, 1], "time": [0, 1], "sensit": [0, 1], "hot": [0, 1], "rang": [0, 1], "0": [0, 1], "1": [0, 1], "5": [0, 1], "timeout": 0, "second": [0, 1], "until": [0, 1], "wait": [0, 1], "3": [0, 1], "phrase": [0, 1], "remain": 0, "none": [0, 1], "flag": [0, 1], "version": [0, 1], "skip": 0, "process": [0, 1], "fals": [0, 1], "enforc": 0, "cpu": 0, "core": [0, 1], "debug": [0, 1], "enabl": [0, 1], "level": [0, 1], "A": [0, 1], "json": [0, 1], "object": [0, 1], "custom": [0, 1], "These": 0, "accord": 0, "pitch": 0, "pleas": 0, "py": [0, 1], "figur": [0, 1], "suitabl": 0, "trial": [0, 1], "error": [0, 1], "basi": 0, "ad": [0, 1], "avoid": [0, 1], "hard": 0, "phrase_limit": [0, 1], "con": 0, "disabl": [0, 1], "after": [0, 1], "even": [0, 1], "i": [0, 1], "talk": 0, "stop": [0, 1], "sampl": [0, 1], "format": [0, 1], "recognizer_set": [0, 1], "energy_threshold": [0, 1], "1100": 0, "dynamic_energy_threshold": [0, 1], "pause_threshold": [0, 1], "2": [0, 1], "phrase_threshold": [0, 1], "non_speaking_dur": [0, 1], "descript": 0, "minimum": [0, 1], "audio": 0, "energi": [0, 1], "consid": [0, 1], "record": [0, 1], "greater": [0, 1], "louder": 0, "chang": [0, 1], "consider": 0, "threshold": [0, 1], "dynam": [0, 1], "non": 0, "befor": [0, 1], "can": [0, 1], "below": [0, 1], "thi": [0, 1], "ignor": [0, 1], "help": [0, 1], "filter": [0, 1], "keep": [0, 1], "both": [0, 1], "side": [0, 1], "github": 0, "usernam": [0, 1], "pass": [0, 1], "token": [0, 1], "weather": 0, "api": 0, "openweathermap": 0, "new": [0, 1], "newsapi": 0, "map": [0, 1], "googl": [0, 1], "wolfram": [0, 1], "alpha": [0, 1], "birthdai": [0, 1], "birth": 0, "date": [0, 1], "dd": [0, 1], "mm": [0, 1], "exampl": [0, 1], "24": [0, 1], "april": 0, "email": [0, 1], "sm": [0, 1], "notif": [0, 1], "gmail": [0, 1], "account": [0, 1], "send": [0, 1], "read": 0, "open": [0, 1], "altern": [0, 1], "an": [0, 1], "gmail_us": [0, 1], "gmail_pass": [0, 1], "recipi": [0, 1], "receiv": [0, 1], "io": 0, "integr": 0, "icloud": [0, 1], "recoveri": 0, "phone": [0, 1], "lost": 0, "mode": [0, 1], "target": [0, 1], "11234567890": 0, "meet": 0, "ic": [0, 1], "url": [0, 1], "share": 0, "inform": [0, 1], "end": [0, 1], "mute": [0, 1], "FOR": 0, "applic": 0, "bulb": [0, 1], "when": [0, 1], "calend": 0, "within": [0, 1], "scan": [0, 1], "hour": [0, 1], "sync": [0, 1], "interv": [0, 1], "gener": [0, 1], "schedul": 0, "alert": [0, 1], "24h": [0, 1], "hh": 0, "fire": 0, "09": 0, "00": 0, "temperatur": 0, "higher": [0, 1], "than": [0, 1], "100": [0, 1], "lower": [0, 1], "36": 0, "sever": [0, 1], "also": [0, 1], "yaml": [0, 1], "keyword": 0, "wi": [0, 1], "fi": [0, 1], "wifi": 0, "ssid": [0, 1], "wireless": 0, "retri": 0, "frequenc": [0, 1], "check": [0, 1], "internet": 0, "vpnserver": 0, "vpn": 0, "creat": [0, 1], "server": 0, "profil": [0, 1], "authent": 0, "domain": 0, "zone": 0, "alia": [0, 1], "car": 0, "appli": [0, 1], "jlr": [0, 1], "vehicl": [0, 1], "subscrib": 0, "incontrol": [0, 1], "pin": [0, 1], "garag": 0, "myq": 0, "telegram": 0, "bot": [0, 1], "chat": [0, 1], "userid": [0, 1], "chatid": 0, "o": [0, 1], "agnost": 0, "model": 0, "synthesi": [0, 1], "docker": [0, 1], "contain": [0, 1], "request": [0, 1], "qualiti": [0, 1], "convers": [0, 1], "medium": [0, 1], "independ": 0, "p": 0, "5002": 0, "e": [0, 1], "home": [0, 1], "v": [0, 1], "usr": 0, "ca": 0, "certif": 0, "etc": [0, 1], "ssl": 0, "cert": 0, "w": 0, "pwd": 0, "u": 0, "g": [0, 1], "thevickypedia": 0, "better": [0, 1], "respons": [0, 1], "might": [0, 1], "negligibli": 0, "slower": [0, 1], "If": [0, 1], "you": 0, "don": [0, 1], "t": [0, 1], "simpli": [0, 1], "want": 0, "speech_synthesis_timeout": [0, 1], "done": [0, 1], "automat": 0, "fail": [0, 1], "launch": [0, 1], "upon": [0, 1], "startup": [0, 1], "offlin": 0, "commun": 0, "port": 0, "4483": 0, "offlinecomm": 0, "worker": [0, 1], "uvicorn": [0, 1], "spin": 0, "up": [0, 1], "stock": [0, 1], "portfolio": [0, 1], "robinhood": 0, "qr": 0, "login": [0, 1], "endpoint": [0, 1], "auth": 0, "everi": [0, 1], "surveil": 0, "webcam": 0, "live": [0, 1], "feed": [0, 1], "via": [0, 1], "session": [0, 1], "300": [0, 1], "monitor": [0, 1], "otp": 0, "revers": [0, 1], "proxi": [0, 1], "tunnel": [0, 1], "expos": 0, "15": [0, 1], "minut": [0, 1], "There": [0, 1], "two": [0, 1], "intern": [0, 1], "compat": [0, 1], "certain": [0, 1], "background_task": [0, 1], "directori": [0, 1], "instruct": 0, "1_800": 0, "just": [0, 1], "turn": [0, 1], "light": 0, "30": [0, 1], "retain": 0, "last": [0, 1], "eg": 0, "color": [0, 1], "ignore_hour": [0, 1], "am": [0, 1], "pm": [0, 1], "10_800": 0, "remind": 0, "me": 0, "drink": 0, "water": 0, "specifi": [0, 1], "21": [0, 1], "6": [0, 1], "between": [0, 1], "9": [0, 1], "crontab": 0, "extern": [0, 1], "cron": [0, 1], "express": [0, 1], "need": [0, 1], "find": [0, 1], "delet": [0, 1], "tar": 0, "zcf": 0, "backup": [0, 1], "tgz": 0, "demand": 0, "connector": 0, "current": [0, 1], "present": [0, 1], "howev": 0, "directli": 0, "toni": [0, 1], "0123456789": 0, "thor": 0, "1234567890": 0, "eddard": 0, "ned": 0, "com": [0, 1], "aegon": 0, "egg": 0, "yahoo": 0, "sourc": [0, 1], "smart_devic": [0, 1], "hostnam": [0, 1], "magichom": [0, 1], "lgwebo": [0, 1], "roku": [0, 1], "tv": 0, "includ": [0, 1], "brand": 0, "lg": [0, 1], "distinguish": 0, "accordingli": [0, 1], "your": 0, "doesn": [0, 1], "mac": [0, 1], "bandwidth": 0, "saver": 0, "under": [0, 1], "network": [0, 1], "For": [0, 1], "first": [0, 1], "prompt": [0, 1], "accept": [0, 1], "onc": [0, 1], "client": [0, 1], "repeat": [0, 1], "identifi": [0, 1], "The": [0, 1], "action": [0, 1], "dictionari": [0, 1], "nest": 0, "multipl": [0, 1], "paramet": [0, 1], "bedroom": 0, "hallwai": 0, "basement": 0, "kitchen": 0, "room": 0, "parti": [0, 1], "engag": 0, "individu": [0, 1], "client_kei": [0, 1], "unavail": 0, "mac_address": [0, 1], "either": [0, 1], "string": [0, 1], "wired_mac_address": 0, "wireless_mac_address": 0, "execut": [0, 1], "pre": [0, 1], "defin": [0, 1], "without": [0, 1], "ani": [0, 1], "interact": [0, 1], "look": [0, 1], "str": [0, 1], "sai": [0, 1], "weekdai": [0, 1], "weekend": [0, 1], "particular": [0, 1], "Not": 0, "daili": [0, 1], "match": 0, "exactli": 0, "describ": 0, "06": 0, "mondai": [0, 1], "fridai": [0, 1], "my": 0, "50": [0, 1], "wednesdai": [0, 1], "08": 0, "saturdai": [0, 1], "sundai": [0, 1], "12": [0, 1], "perform": [0, 1], "result": [0, 1], "meeting_ev": 0, "what": [0, 1], "do": 0, "todai": [0, 1], "refer": [0, 1], "wiki": [0, 1], "page": [0, 1], "overview": 0, "demo": 0, "video": [0, 1], "docstr": 0, "style": [0, 1], "convent": 0, "pep": 0, "8": 0, "clean": [0, 1], "commit": 0, "hook": 0, "flake8": 0, "isort": 0, "changelog": 0, "f": 0, "release_not": 0, "rst": 0, "precommit": 0, "ensur": [0, 1], "doc": [0, 1], "creation": 0, "sphinx": 0, "recommonmark": 0, "http": [0, 1], "org": [0, 1], "project": 0, "sivanandha": 0, "rao": [0, 1], "mit": 0, "kick": 1, "off": 1, "prerequisit": 1, "peripher": 1, "env": 1, "variabl": 1, "featur": 1, "contact": 1, "smart": 1, "setup": 1, "option": 1, "guid": 1, "faq": 1, "code": 1, "standard": 1, "releas": 1, "note": 1, "lint": 1, "pypi": 1, "packag": 1, "runbook": 1, "licens": 1, "copyright": 1, "list_splitt": 1, "original_list": 1, "delimit": 1, "split": 1, "given": 1, "final": 1, "where": 1, "must": 1, "main_list": 1, "drive": 1, "jaguar": 1, "stark": 1, "mark": 1, "iii": 1, "sinc": 1, "return": 1, "type": 1, "about": 1, "instanti": 1, "builtin": 1, "rais": 1, "cameraerror": 1, "unabl": 1, "_get_camera_info_linux": 1, "yield": 1, "raw": 1, "output": 1, "_list_cameras_linux": 1, "_get_camera_info_window": 1, "dict": 1, "windowso": 1, "_list_cameras_window": 1, "_get_camera_info_darwin": 1, "xml": 1, "_list_cameras_darwin": 1, "get_camera_info": 1, "union": 1, "space": 1, "channeltyp": 1, "channel": 1, "input_channel": 1, "maxinputchannel": 1, "output_channel": 1, "maxoutputchannel": 1, "_generate_next_value_": 1, "count": 1, "last_valu": 1, "next": 1, "member": 1, "exist": 1, "assign": 1, "_member_names_": 1, "_member_map_": 1, "_member_type_": 1, "_value2member_map_": 1, "channel_typ": 1, "get_audio_devic": 1, "int": 1, "float": 1, "iter": 1, "over": 1, "input": 1, "take": 1, "argument": 1, "determin": 1, "avail": 1, "learn": 1, "train": 1, "engin": 1, "convert": 1, "attribut": 1, "get_english_voic": 1, "english": 1, "get_voice_by_languag": 1, "lang_cod": 1, "get_voice_by_index": 1, "get_voice_by_nam": 1, "get_voice_by_gend": 1, "gender": 1, "set_voic": 1, "voice_index": 1, "noreturn": 1, "per": 1, "speak_all_voic": 1, "speak_english_voic": 1, "async": 1, "save_for_refer": 1, "save": 1, "origin": 1, "dump": 1, "asynchron": 1, "call": 1, "never": 1, "loop": 1, "spectrum": 1, "matplotlib": 1, "graphmic": 1, "sound": 1, "readthedoc": 1, "graph_mic": 1, "wrap": 1, "sampler": 1, "down_sampl": 1, "window_s": 1, "tupl": 1, "dark_mod": 1, "bool": 1, "line": 1, "line2d": 1, "plot_data": 1, "ndarrai": 1, "list_devic": 1, "devicelist": 1, "audion": 1, "audio_callback": 1, "indata": 1, "frame": 1, "struct": 1, "statu": 1, "callbackflag": 1, "separ": 1, "thread": 1, "block": 1, "update_plot": 1, "updat": 1, "callback": 1, "happen": 1, "frequent": 1, "therefor": 1, "queue": 1, "tend": 1, "data": 1, "plot_mic": 1, "40": 1, "numer": 1, "substr": 1, "visibl": 1, "slot": 1, "displai": 1, "nth": 1, "size": 1, "7": 1, "inch": 1, "width": 1, "height": 1, "how": 1, "quick": 1, "graph": 1, "move": 1, "screen": 1, "1000": 1, "pretti": 1, "almost": 1, "black": 1, "_kick_off": 1, "signal": 1, "restart_check": 1, "await": 1, "heard": 1, "stream": 1, "acknowledg": 1, "plai": 1, "sent": 1, "should_return": 1, "disturb": 1, "accident": 1, "woke": 1, "work": 1, "porcupin": 1, "instanc": 1, "occurr": 1, "fewer": 1, "miss": 1, "cost": 1, "increas": 1, "toler": 1, "overflow": 1, "handl": 1, "open_stream": 1, "pyaudio": 1, "node": 1, "audio_stream": 1, "forev": 1, "invok": 1, "exit": 1, "manual": 1, "interrupt": 1, "kill": 1, "held": 1, "close": 1, "_preexec": 1, "keywords_handl": 1, "get_tim": 1, "rewrite_keyword": 1, "init": 1, "els": 1, "suppress": 1, "fast": 1, "enable_cor": 1, "cor": 1, "cross": 1, "restrict": 1, "update_keyword": 1, "buffer": 1, "modif": 1, "run_robinhood": 1, "dedic": 1, "wa": 1, "modifi": 1, "earlier": 1, "past": 1, "start_robinhood": 1, "gather": 1, "alreadi": 1, "apiserv": 1, "state": 1, "protocol": 1, "overrid": 1, "encod": 1, "issu": 1, "742": 1, "issuecom": 1, "674411676": 1, "install_signal_handl": 1, "run_in_parallel": 1, "fast_api": 1, "being": 1, "so": 1, "attempt": 1, "offline_has_access": 1, "httpbasiccredenti": 1, "depend": 1, "httpbearer": 1, "mention": 1, "header": 1, "apirespons": 1, "401": 1, "invalid": 1, "robinhood_has_access": 1, "surveillance_has_access": 1, "offlinecommunicatormod": 1, "basemodel": 1, "pars": 1, "validationerror": 1, "cannot": 1, "form": 1, "native_audio": 1, "speech_timeout": 1, "_abc_impl": 1, "_abc": 1, "_abc_data": 1, "stockmonitormod": 1, "emailstr": 1, "apikei": 1, "plaintext": 1, "cameraindexmod": 1, "speechsynthesismod": 1, "across": 1, "hashabl": 1, "baseconfig": 1, "public_url": 1, "httpurl": 1, "camera_index": 1, "client_id": 1, "available_camera": 1, "queue_manag": 1, "session_manag": 1, "user_info": 1, "stock_list": 1, "connectionmanag": 1, "websocket": 1, "fastapi": 1, "tiangolo": 1, "advanc": 1, "disconnect": 1, "redirect_index": 1, "redirect": 1, "health": 1, "offlinecommun": 1, "success": 1, "get_favicon": 1, "favicon": 1, "ico": 1, "filerespons": 1, "front": 1, "list_fil": 1, "download": 1, "upload": 1, "get_fil": 1, "filenam": 1, "put_fil": 1, "uploadfil": 1, "pair": 1, "offline_compat": 1, "authenticate_robinhood": 1, "singl": 1, "successfulli": 1, "503": 1, "robinhood_endpoint_auth": 1, "succe": 1, "mfa": 1, "verifi": 1, "nullifi": 1, "soon": 1, "robinhood_path": 1, "serv": 1, "static": 1, "403": 1, "null": 1, "404": 1, "html": 1, "found": 1, "417": 1, "auto": 1, "render": 1, "htmlrespons": 1, "behind": 1, "multi": 1, "factor": 1, "one": 1, "usabl": 1, "hex": 1, "uuid": 1, "enter": 1, "queri": 1, "refresh": 1, "useless": 1, "becaus": 1, "memori": 1, "clear": 1, "kill_pow": 1, "insert": 1, "stopper": 1, "process_ok_respons": 1, "input_data": 1, "byte": 1, "messag": 1, "synthes": 1, "nativ": 1, "case": 1, "offline_communicator_api": 1, "instead": 1, "querystr": 1, "built": 1, "204": 1, "empti": 1, "422": 1, "part": 1, "made": 1, "speech_synthesi": 1, "speech_synthesis_voic": 1, "500": 1, "raise_for_statu": 1, "gettext": 1, "ot": 1, "wasn": 1, "stock_monitor": 1, "apikey_is_allow": 1, "compar": 1, "send_otp_stock_monitor": 1, "email_address": 1, "reset_timeout": 1, "expir": 1, "deliveri": 1, "stock_monitor_api": 1, "email_otp": 1, "One": 1, "passcod": 1, "put": 1, "plain": 1, "expect": 1, "localhost": 1, "javascript": 1, "jwt": 1, "ticker": 1, "max": 1, "price": 1, "min": 1, "correct": 1, "percentag": 1, "vigneshrao": 1, "entri": 1, "409": 1, "lesser": 1, "grater": 1, "maximum": 1, "against": 1, "502": 1, "backend": 1, "authenticate_surveil": 1, "cam": 1, "chosen": 1, "surveillance_endpoint_auth": 1, "frontend": 1, "307": 1, "video_fe": 1, "streamingrespons": 1, "direct": 1, "collect": 1, "websocket_endpoint": 1, "epoch": 1, "multiprocess": 1, "anywai": 1, "valueerror": 1, "still": 1, "eoferror": 1, "entrypoint": 1, "stem": 1, "wrapper": 1, "point": 1, "bare": 1, "get_entrypoint": 1, "potenti": 1, "discoveri": 1, "crude": 1, "wai": 1, "rout": 1, "apirout": 1, "looger": 1, "configur": 1, "markethour": 1, "market": 1, "timezon": 1, "usa": 1, "extend": 1, "regular": 1, "rh_cron_schedul": 1, "stock_report": 1, "sm_cron_schedul": 1, "include_weekend": 1, "stockmonitor_squir": 1, "ticker_gather": 1, "charact": 1, "nasdaq": 1, "drop": 1, "ascii": 1, "alphabet": 1, "thread_work": 1, "function_to_cal": 1, "callabl": 1, "threadpoolexecutor": 1, "method": 1, "arg": 1, "spun": 1, "cleanup_stock_userdata": 1, "duplic": 1, "insert_stock_userdata": 1, "get_stock_userdata": 1, "delete_stock_userdata": 1, "surveillance_squir": 1, "generate_error_fram": 1, "dimens": 1, "imag": 1, "x": 1, "numpi": 1, "coordin": 1, "boundari": 1, "center": 1, "test_camera": 1, "provid": 1, "gen_fram": 1, "flip": 1, "streamer": 1, "asynciter": 1, "extract": 1, "aliv": 1, "bytestr": 1, "concat": 1, "push": 1, "larg": 1, "item": 1, "onto": 1, "essenti": 1, "despit": 1, "immedi": 1, "mai": 1, "latenc": 1, "timeout_otp": 1, "reset_robinhood": 1, "reset": 1, "reset_stock_monitor": 1, "reset_surveil": 1, "generate_graph": 1, "bar": 1, "histor": 1, "fetch": 1, "stackoverflow": 1, "49729752": 1, "group": 1, "group_data": 1, "column": 1, "rest": 1, "among": 1, "get_pric": 1, "along": 1, "exchang": 1, "closest_maximum": 1, "stock_pric": 1, "96": 1, "85": 1, "becom": 1, "notifi": 1, "amount": 1, "though": 1, "less": 1, "actual": 1, "closest_minimum": 1, "225": 1, "220": 1, "242": 1, "send_notif": 1, "continu": 1, "watcher": 1, "profit": 1, "loss": 1, "purchas": 1, "watchlist": 1, "strict": 1, "sweep": 1, "ago": 1, "10minut": 1, "were": 1, "watch": 1, "unicod": 1, "went": 1, "down": 1, "necessari": 1, "jinja": 1, "report_gather": 1, "create_alarm": 1, "am_pm": 1, "timer": 1, "lock": 1, "week": 1, "set_alarm": 1, "clock": 1, "kill_alarm": 1, "remov": 1, "ring": 1, "mp3": 1, "revert": 1, "automation_handl": 1, "renam": 1, "tmp": 1, "rewrite_autom": 1, "write_data": 1, "rewrit": 1, "auto_help": 1, "offline_list": 1, "background_task_handl": 1, "compare_task": 1, "dict1": 1, "dict2": 1, "similar": 1, "remove_corrupt": 1, "backgroundtask": 1, "corrupt": 1, "validate_task": 1, "info": 1, "current_set_temperatur": 1, "latitud": 1, "longitud": 1, "condens": 1, "its": 1, "own": 1, "failur": 1, "turn_on": 1, "climat": 1, "turn_off": 1, "enable_guard": 1, "guardian": 1, "unlock": 1, "dt_string": 1, "honk": 1, "retriev": 1, "report": 1, "remot": 1, "31": 1, "lo": 1, "57": 1, "58": 1, "84": 1, "convert_dt_report": 1, "utc": 1, "local": 1, "status_data": 1, "subscription_data": 1, "subscript": 1, "temp": 1, "end_tim": 1, "establish": 1, "primari": 1, "13": 1, "digit": 1, "integ": 1, "microsecond": 1, "logic": 1, "read_gmail": 1, "unread": 1, "credenti": 1, "send_sm": 1, "bodi": 1, "subject": 1, "through": 1, "gatewai": 1, "destin": 1, "smtp": 1, "lib": 1, "send_email": 1, "sender": 1, "mail": 1, "comm_squir": 1, "extract_contact": 1, "initiate_sm": 1, "ask": 1, "initiate_email": 1, "wifi_connector": 1, "unknown": 1, "appropri": 1, "shouldn": 1, "stopsign": 1, "sleep": 1, "split_phras": 1, "statement": 1, "delay_condit": 1, "delai": 1, "said": 1, "offline_commun": 1, "timed_delai": 1, "awaken": 1, "greet_check": 1, "greet": 1, "renew": 1, "break": 1, "right": 1, "noth": 1, "approv": 1, "uptim": 1, "system_vit": 1, "pid": 1, "exit_process": 1, "hold": 1, "sleep_control": 1, "reduc": 1, "sentri": 1, "restart_control": 1, "quiet": 1, "stop_termin": 1, "iterm": 1, "shutdown": 1, "deep": 1, "delete_docker_contain": 1, "intent": 1, "readm": 1, "cleanup": 1, "flush": 1, "stdio": 1, "proce": 1, "delete_log": 1, "period": 1, "inod": 1, "delete_pycach": 1, "__pycache__": 1, "sub": 1, "dir": 1, "set_execut": 1, "starter": 1, "crucial": 1, "put_listener_st": 1, "master": 1, "purg": 1, "older": 1, "pycach": 1, "crontab_executor": 1, "log_fil": 1, "On": 1, "short": 1, "date_tim": 1, "current_tim": 1, "respect": 1, "current_d": 1, "time_travel": 1, "display_funct": 1, "detected_fac": 1, "captur": 1, "pictur": 1, "preview": 1, "futur": 1, "get_contact": 1, "defaultdict": 1, "get_frequ": 1, "func": 1, "put_frequ": 1, "write": 1, "get_loc": 1, "myq_control": 1, "asyncthread": 1, "kwarg": 1, "asynchronosli": 1, "super": 1, "run_async": 1, "github_control": 1, "clone": 1, "repositori": 1, "get_stat": 1, "db": 1, "put_stat": 1, "stop_and_respond": 1, "repsond": 1, "politely_dis": 1, "guard_dis": 1, "threat": 1, "runtim": 1, "security_runn": 1, "guard_en": 1, "anoth": 1, "previou": 1, "threat_notifi": 1, "face_detect": 1, "attach": 1, "intrud": 1, "ip_address": 1, "simpl": 1, "see": 1, "privat": 1, "ip": 1, "vpn_checker": 1, "public_ip_info": 1, "public": 1, "ip_info": 1, "get_connection_info": 1, "ethernet": 1, "speed_test": 1, "ping": 1, "psutil": 1, "en": 1, "latest": 1, "cpu_count": 1, "ios_funct": 1, "device_selector": 1, "appledevic": 1, "select": 1, "location_servic": 1, "appl": 1, "locate_devic": 1, "target_devic": 1, "warm": 1, "yellow": 1, "cool": 1, "white": 1, "lumen": 1, "rgb": 1, "255": 1, "red": 1, "green": 1, "andblu": 1, "alter": 1, "threadexecutor": 1, "host_ip": 1, "pool": 1, "avail_check": 1, "aren": 1, "reachabl": 1, "lights_squir": 1, "preset": 1, "device_ip": 1, "random": 1, "runner": 1, "check_statu": 1, "remove_statu": 1, "update_statu": 1, "children": 1, "party_mod": 1, "listener_control": 1, "get_listener_st": 1, "get_coordinates_from_ip": 1, "speedtest": 1, "get_location_from_coordin": 1, "write_current_loc": 1, "distanc": 1, "distance_control": 1, "calcul": 1, "place": 1, "locate_plac": 1, "detail": 1, "no_repeat": 1, "geocod": 1, "placehold": 1, "switch": 1, "recurs": 1, "himself": 1, "job": 1, "get_tunnel": 1, "ngrok": 1, "thei": 1, "forever_ngrok": 1, "post": 1, "on_demand_offline_autom": 1, "anystr": 1, "called_by_offlin": 1, "whatev": 1, "l": 1, "music": 1, "player": 1, "google_hom": 1, "socket": 1, "deblockt": 1, "pull": 1, "most": 1, "brokenpipeerror": 1, "usual": 1, "written": 1, "occur": 1, "tri": 1, "while": 1, "NOT": 1, "ioerror": 1, "errno": 1, "epip": 1, "write_screen": 1, "joke": 1, "chucknorri": 1, "flip_a_coin": 1, "head": 1, "tail": 1, "choic": 1, "fact": 1, "tell": 1, "skim": 1, "news_sourc": 1, "fox": 1, "around": 1, "thing": 1, "morn": 1, "give": 1, "routin": 1, "abus": 1, "photo": 1, "ambienc": 1, "pypi_vers": 1, "package_nam": 1, "port_handl": 1, "is_port_in_us": 1, "kill_port_pid": 1, "tcp": 1, "lsof": 1, "child": 1, "differ": 1, "same": 1, "mainprocess": 1, "delete_db": 1, "shut": 1, "clear_db": 1, "create_process_map": 1, "func_nam": 1, "special": 1, "speech_synthes": 1, "telegram_api": 1, "re": 1, "real": 1, "start_process": 1, "achiev": 1, "parallel": 1, "otherwis": 1, "poll": 1, "lookout": 1, "reconnect": 1, "stop_child_process": 1, "stop_process": 1, "create_remind": 1, "to_about": 1, "find_nam": 1, "person": 1, "icon": 1, "rh": 1, "total": 1, "get_simulation_data": 1, "initiate_simul": 1, "simulation_data": 1, "categori": 1, "run_simul": 1, "system_info": 1, "suggest": 1, "reboot": 1, "get_distributor_info_linux": 1, "distributor": 1, "hosted_device_info": 1, "botinus": 1, "connectionerror": 1, "20": 1, "todo_list": 1, "todo": 1, "get_todo": 1, "add_todo": 1, "delete_todo_item": 1, "delete_todo": 1, "tv_statu": 1, "tv_ip_list": 1, "abl": 1, "256": 1, "possibl": 1, "televis": 1, "web": 1, "tv_control": 1, "tv_ip": 1, "nicknam": 1, "webo": 1, "uncategor": 1, "broad": 1, "claus": 1, "did": 1, "consum": 1, "google_map": 1, "nearbi": 1, "predefin": 1, "main_volum": 1, "speaker_volum": 1, "setvolum": 1, "rlatour": 1, "setvol": 1, "vpn_server": 1, "regional_phras": 1, "extract_custom_region": 1, "region": 1, "vpn_server_switch": 1, "custom_region": 1, "destroi": 1, "aw": 1, "weather_monitor": 1, "low": 1, "classif": 1, "algorithm": 1, "keywordclassifi": 1, "word_match": 1, "reverse_lookup": 1, "lookup": 1, "match_list": 1, "forward_lookup": 1, "exact": 1, "regex": 1, "wikipedia_": 1, "ssqualiti": 1, "medium_qu": 1, "us_northern_english_mal": 1, "glow_tt": 1, "audio_driv": 1, "choos": 1, "frequently_us": 1, "function_nam": 1, "purpos": 1, "analyz": 1, "order": 1, "later": 1, "stdout": 1, "upcom": 1, "unless": 1, "check_exist": 1, "tradit": 1, "commandlin": 1, "cid": 1, "tt": 1, "stt": 1, "tts_stt": 1, "generate_audio_fil": 1, "filepath": 1, "text_to_audio": 1, "flaki": 1, "wav": 1, "kernel": 1, "audio_to_text": 1, "voice_default": 1, "voice_chang": 1, "authbear": 1, "auth_bear": 1, "bearerauth": 1, "getpostman": 1, "view": 1, "6250319": 1, "rznbmzqo": 1, "landrov": 1, "_open": 1, "device_id": 1, "refresh_token": 1, "china_serv": 1, "auth_expiri": 1, "uuid4": 1, "china": 1, "durat": 1, "forc": 1, "post_data": 1, "extens": 1, "_register_device_and_log_in": 1, "regist": 1, "_register_auth": 1, "_set_head": 1, "access_token": 1, "_authent": 1, "_register_devic": 1, "_login_us": 1, "get_vehicl": 1, "get_user_info": 1, "update_user_info": 1, "user_info_data": 1, "vin": 1, "incom": 1, "get_contact_info": 1, "mcc": 1, "road": 1, "assist": 1, "tracker": 1, "mobil": 1, "countri": 1, "get_attribut": 1, "get_statu": 1, "ev": 1, "get_health_statu": 1, "get_departure_tim": 1, "departur": 1, "get_wakeup_tim": 1, "wakeup": 1, "get_subscription_packag": 1, "get_trip": 1, "trip": 1, "associ": 1, "000": 1, "get_guardian_mode_alarm": 1, "get_guardian_mode_alert": 1, "get_guardian_mode_statu": 1, "get_guardian_mode_settings_us": 1, "get_guardian_mode_settings_system": 1, "trip_id": 1, "get_posit": 1, "posit": 1, "get_servic": 1, "servic": 1, "histori": 1, "get_service_statu": 1, "service_id": 1, "get_rcc_target_valu": 1, "set_attribut": 1, "registration_numb": 1, "plate": 1, "reset_alarm": 1, "honk_blink": 1, "horn": 1, "flash": 1, "remote_engine_start": 1, "target_temperatur": 1, "remote_engine_stop": 1, "set_rcc_target_temperatur": 1, "preconditioning_start": 1, "celsiu": 1, "precondit": 1, "absenc": 1, "decim": 1, "210": 1, "equal": 1, "0c": 1, "155": 1, "285": 1, "hi": 1, "preconditioning_stop": 1, "climate_priorit": 1, "prioriti": 1, "priorit": 1, "comfort": 1, "prioritize_rang": 1, "prioritize_comfort": 1, "_preconditioning_control": 1, "service_paramet": 1, "charging_stop": 1, "charg": 1, "charging_start": 1, "set_max_soc": 1, "max_charge_level": 1, "set_one_off_max_soc": 1, "Will": 1, "presum": 1, "charger": 1, "add_departure_tim": 1, "year": 1, "month": 1, "intend": 1, "seemingli": 1, "uniqu": 1, "add_repeated_departure_tim": 1, "thursdai": 1, "tuesdai": 1, "delete_departure_tim": 1, "add_charging_period": 1, "hour_from": 1, "minute_from": 1, "hour_to": 1, "minute_to": 1, "_charging_profile_control": 1, "service_parameter_kei": 1, "set_wakeup_tim": 1, "wakeup_tim": 1, "four": 1, "inact": 1, "In": 1, "delete_wakeup_tim": 1, "cancel": 1, "_set_wakeup": 1, "wakeup_data": 1, "enable_service_mod": 1, "expiration_tim": 1, "theft": 1, "enable_guardian_mod": 1, "sort": 1, "took": 1, "timestamp": 1, "enable_transport_mod": 1, "transport": 1, "enable_privacy_mod": 1, "journei": 1, "long": 1, "disable_privacy_mod": 1, "resum": 1, "_prov_command": 1, "serviceconfigur": 1, "_authenticate_vin_protected_servic": 1, "service_nam": 1, "_authenticate_servic": 1, "outgo": 1, "keywordsbas": 1, "keywords_bas": 1, "keyword_map": 1, "singular": 1, "plural": 1, "wherev": 1, "inflect": 1, "singular_noun": 1, "But": 1, "approach": 1, "inconsist": 1, "cronexpress": 1, "1970": 1, "epoch_utc_offset": 1, "invalidargu": 1, "field": 1, "offset": 1, "As": 1, "sixth": 1, "element": 1, "suppli": 1, "descend": 1, "signific": 1, "day_nam": 1, "zip": 1, "59": 1, "23": 1, "days_of_month": 1, "days_of_week": 1, "l_field": 1, "field_rang": 1, "month_nam": 1, "default_epoch": 1, "substitut": 1, "annual": 1, "hourli": 1, "midnight": 1, "monthli": 1, "weekli": 1, "yearli": 1, "compute_numtab": 1, "recomput": 1, "string_tab": 1, "check_trigg": 1, "date_tupl": 1, "utc_offset": 1, "parse_atom": 1, "minmax": 1, "inclus": 1, "upper": 1, "4": 1, "18": 1, "baseset": 1, "common": 1, "unsupportedo": 1, "positiveint": 1, "ram": 1, "positivefloat": 1, "physical_cor": 1, "logical_cor": 1, "wake_word": 1, "eventapp": 1, "enum": 1, "recognizerset": 1, "high_qual": 1, "low_qual": 1, "link": 1, "constrainedstrvalu": 1, "classmethod": 1, "check_empty_str": 1, "check_hours_format": 1, "envconfig": 1, "directorypath": 1, "root_us": 1, "mute_for_meet": 1, "voice_nam": 1, "_rate": 1, "voice_r": 1, "speaker_index": 1, "microphone_index": 1, "log_retent": 1, "websit": 1, "author_mod": 1, "weather_api": 1, "wolfram_api": 1, "maps_api": 1, "news_api": 1, "open_gmail_us": 1, "open_gmail_pass": 1, "phone_numb": 1, "offline_host": 1, "offline_port": 1, "offline_pass": 1, "event_app": 1, "ics_url": 1, "sync_meet": 1, "sync_ev": 1, "surveillance_session_timeout": 1, "icloud_us": 1, "icloud_pass": 1, "icloud_recoveri": 1, "robinhood_us": 1, "robinhood_pass": 1, "robinhood_qr": 1, "git_us": 1, "git_pass": 1, "vpn_usernam": 1, "vpn_password": 1, "vpn_domain": 1, "vpn_record_nam": 1, "car_email": 1, "car_pass": 1, "car_pin": 1, "myq_usernam": 1, "myq_password": 1, "bot_token": 1, "bot_chat_id": 1, "bot_us": 1, "speech_synthesis_qu": 1, "speech_synthesis_host": 1, "speech_synthesis_port": 1, "weather_alert": 1, "wifi_ssid": 1, "wifi_password": 1, "connection_retri": 1, "env_prefix": 1, "env_fil": 1, "parse_microphone_index": 1, "parse_speaker_index": 1, "parse_birthdai": 1, "parse_weather_alert": 1, "tmp_autom": 1, "tmp_background_task": 1, "base_db": 1, "task_db": 1, "stock_db": 1, "stock_list_backup": 1, "training_data": 1, "app_launch": 1, "event_script": 1, "speech_synthesis_wav": 1, "speech_synthesis_log": 1, "speech_synthesis_id": 1, "coin": 1, "exhaust": 1, "tv_connect": 1, "tv_scan": 1, "cursor": 1, "create_t": 1, "table_nam": 1, "__testdatabas": 1, "random_singl": 1, "random_doubl": 1, "mask": 1, "meaning": 1, "py_error_handl": 1, "err": 1, "fmt": 1, "especi": 1, "no_alsa_err": 1, "alsa": 1, "them": 1, "correctli": 1, "goe": 1, "pulseaudio": 1, "jack": 1, "hardwar": 1, "seem": 1, "taken": 1, "hide": 1, "comment": 1, "speech_recognit": 1, "uberi": 1, "182": 1, "191": 1, "forum": 1, "raspberrypi": 1, "viewtop": 1, "php": 1, "136974": 1, "oserror": 1, "unsupport": 1, "blockingioerror": 1, "overflowerror": 1, "keyboardinterrupt": 1, "status_cod": 1, "httpexcept": 1, "invalidenvvar": 1, "missingenvvar": 1, "tverror": 1, "connectionreseterror": 1, "nocoversfound": 1, "notimplementederror": 1, "covernotonlin": 1, "msg": 1, "systemerror": 1, "segmentationerror": 1, "sigsegv": 1, "verify_imag": 1, "condition_check": 1, "dataset": 1, "learning_r": 1, "hog": 1, "load_dataset": 1, "face_recognit": 1, "retry_count": 1, "quit": 1, "enclos": 1, "mirror": 1, "cv2_open": 1, "jpg": 1, "grayscal": 1, "neighbor": 1, "vertic": 1, "capture_imag": 1, "magichomeapi": 1, "smartlight": 1, "smart_light": 1, "check_number_rang": 1, "calculate_checksum": 1, "bytes_": 1, "checksum": 1, "arrai": 1, "device_typ": 1, "firmwar": 1, "ww": 1, "cw": 1, "udp": 1, "try": 1, "api_port": 1, "5577": 1, "update_devic": 1, "r": 1, "b": 1, "warm_whit": 1, "cool_whit": 1, "we": 1, "blue": 1, "send_preset_funct": 1, "preset_numb": 1, "rage": 1, "0x25": 1, "37": 1, "0x38": 1, "56": 1, "send_byt": 1, "hasn": 1, "been": 1, "reestablish": 1, "preset_valu": 1, "customlogg": 1, "custom_logg": 1, "custom_handl": 1, "log_format": 1, "formatt": 1, "filehandl": 1, "testlogg": 1, "regardless": 1, "test_log": 1, "caller": 1, "custom_tim": 1, "struct_tim": 1, "formattim": 1, "dst": 1, "daylight": 1, "apiconfig": 1, "addprocessnam": 1, "processnam": 1, "process_nam": 1, "logrecord": 1, "multiprocessing_logg": 1, "subprocess": 1, "wordnetweb": 1, "princeton": 1, "edu": 1, "term": 1, "summari": 1, "all_dai": 1, "timedelta": 1, "convert_to_local_tz": 1, "ddd_object": 1, "vdddtype": 1, "all_day_ev": 1, "dt_start": 1, "dt_end": 1, "parse_calendar": 1, "calendar_data": 1, "lookup_d": 1, "icalendar": 1, "ics_meet": 1, "meetings_writ": 1, "meetings_gather": 1, "custom_d": 1, "addon": 1, "deactiv": 1, "custom_meet": 1, "events_writ": 1, "events_gather": 1, "event_app_launch": 1, "applescript": 1, "microsoft": 1, "evalu": 1, "_set_default_voice_nam": 1, "_main_process_valid": 1, "_global_valid": 1, "parent": 1, "garage_control": 1, "aiohttp": 1, "onlin": 1, "back": 1, "flat": 1, "matrix": 1, "exclude_exc": 1, "throw": 1, "decor": 1, "hostname_to_ip": 1, "gethostbyname_ex": 1, "translat": 1, "ipv4": 1, "interfac": 1, "dn": 1, "carefulli": 1, "handwritten": 1, "bound": 1, "loopback": 1, "ones": 1, "gethostbynam": 1, "those": 1, "spot": 1, "behav": 1, "country_timezon": 1, "belong": 1, "celebr": 1, "holidai": 1, "observ": 1, "get_capit": 1, "dot": 1, "letter": 1, "unrecognized_dump": 1, "train_data": 1, "met": 1, "size_convert": 1, "byte_s": 1, "human": 1, "friendli": 1, "understand": 1, "lock_fil": 1, "alarm_fil": 1, "reminder_fil": 1, "hidden": 1, "check_restart": 1, "utc_to_loc": 1, "utc_dt": 1, "build_lookup": 1, "ahead": 1, "detect_lookup_d": 1, "humanized_day_to_datetim": 1, "yesterdai": 1, "tomorrow": 1, "check_stop": 1, "exit_messag": 1, "varieti": 1, "bye": 1, "no_env_var": 1, "unsupported_featur": 1, "flush_screen": 1, "ran": 1, "number_to_word": 1, "input_": 1, "capit": 1, "time_convert": 1, "remove_fil": 1, "sigterm": 1, "sigkil": 1, "connected_to_network": 1, "ins": 1, "dict2class": 1, "get_timezon": 1, "abbrevi": 1, "kms_to_mil": 1, "km": 1, "kilomet": 1, "mile": 1, "part_of_dai": 1, "afternoon": 1, "night": 1, "get_closest_match": 1, "closest": 1, "hash": 1, "sha": 1, "keygen_str": 1, "length": 1, "punctuat": 1, "keygen": 1, "keygen_uuid": 1, "32": 1, "d": 1, "words_to_numb": 1, "comma_separ": 1, "list_": 1, "comma": 1, "join": 1, "analysi": 1, "extract_tim": 1, "delay_calcul": 1, "extract_no": 1, "format_no": 1, "extract_str": 1, "matrix_to_flat_list": 1, "remove_dupl": 1, "block_print": 1, "release_print": 1, "get_free_port": 1, "bind": 1, "sock": 1, "getsocknam": 1, "slave": 1, "well": 1, "known": 1, "1023": 1, "1024": 1, "49151": 1, "49152": 1, "65535": 1, "pick": 1, "randomli": 1, "telegramapi": 1, "username_is_valid": 1, "get_title_by_nam": 1, "predict": 1, "mam": 1, "femal": 1, "male": 1, "unpredict": 1, "intro": 1, "telegrambot": 1, "file_content_url": 1, "botnon": 1, "file_path": 1, "_get_fil": 1, "payload": 1, "_make_request": 1, "60": 1, "submit": 1, "send_audio": 1, "chat_id": 1, "parse_mod": 1, "send_docu": 1, "send_photo": 1, "reply_to": 1, "markdown": 1, "repli": 1, "send_messag": 1, "poll_for_messag": 1, "swap": 1, "reprocess": 1, "verify_timeout": 1, "verify_stop": 1, "process_voic": 1, "process_docu": 1, "process_text": 1, "process_respons": 1, "audiohandl": 1, "audio_handl": 1, "audio_converter_mac": 1, "transcod": 1, "ftransc": 1, "audio_converter_win": 1, "input_filenam": 1, "output_audio_format": 1, "audioseg": 1, "pydub": 1, "file_handl": 1, "_list_fil": 1, "further": 1, "file_cont": 1, "c2f": 1, "celciu": 1, "farenheit": 1, "f2c": 1, "c2k": 1, "kelvin": 1, "k2c": 1, "k2f": 1, "f2k": 1, "emailtempl": 1, "outbound": 1, "endpointtempl": 1, "generictempl": 1, "exce": 1, "weboscli": 1, "much": 1, "quicker": 1, "unstabl": 1, "_reconnect": 1, "_init_statu": 1, "increase_volum": 1, "unit": 1, "decrease_volum": 1, "decreas": 1, "get_volum": 1, "set_volum": 1, "paus": 1, "rewind": 1, "forward": 1, "get_app": 1, "launch_app": 1, "app_nam": 1, "close_app": 1, "launch_info": 1, "get_sourc": 1, "inputsourc": 1, "set_sourc": 1, "val": 1, "current_app": 1, "foreground": 1, "audio_output": 1, "audiooutputsourc": 1, "audio_output_sourc": 1, "set_audio_output_sourc": 1, "rokuecp": 1, "program": 1, "md": 1, "8060": 1, "make_cal": 1, "power": 1, "keypress": 1, "predetermin": 1, "_set_vol_executor": 1, "With": 1, "lack": 1, "zero": 1, "setter": 1, "entir": 1, "broadcast_ip": 1, "default_port": 1, "create_packet": 1, "macaddress": 1, "magic": 1, "packet": 1, "lan": 1, "comput": 1, "construct": 1, "send_packet": 1, "adapt": 1, "search": 1}, "objects": {"jarvis._preexec": [[1, 0, 0, "-", "keywords_handler"]], "jarvis._preexec.keywords_handler": [[1, 1, 1, "", "get_time"], [1, 1, 1, "", "rewrite_keywords"]], "jarvis.api": [[1, 0, 0, "-", "fast"], [1, 0, 0, "-", "server"]], "jarvis.api.fast": [[1, 1, 1, "", "enable_cors"], [1, 1, 1, "", "run_robinhood"], [1, 1, 1, "", "start_robinhood"], [1, 1, 1, "", "update_keywords"]], "jarvis.api.modals": [[1, 0, 0, "-", "authenticator"]], "jarvis.api.modals.authenticator": [[1, 1, 1, "", "offline_has_access"], [1, 1, 1, "", "robinhood_has_access"], [1, 1, 1, "", "surveillance_has_access"]], "jarvis.api.modals.models": [[1, 2, 1, "", "CameraIndexModal"], [1, 2, 1, "", "OfflineCommunicatorModal"], [1, 2, 1, "", "SpeechSynthesisModal"], [1, 2, 1, "", "StockMonitorModal"]], "jarvis.api.modals.models.CameraIndexModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "index"]], "jarvis.api.modals.models.OfflineCommunicatorModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "command"], [1, 3, 1, "", "native_audio"], [1, 3, 1, "", "speech_timeout"]], "jarvis.api.modals.models.SpeechSynthesisModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "quality"], [1, 3, 1, "", "text"], [1, 3, 1, "", "timeout"], [1, 3, 1, "", "voice"]], "jarvis.api.modals.models.StockMonitorModal": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "apikey"], [1, 3, 1, "", "email"], [1, 3, 1, "", "plaintext"], [1, 3, 1, "", "request"], [1, 3, 1, "", "token"]], "jarvis.api.modals.settings": [[1, 0, 0, "-", "ConnectionManager"], [1, 2, 1, "", "Robinhood"], [1, 2, 1, "", "StockMonitor"], [1, 2, 1, "", "Surveillance"]], "jarvis.api.modals.settings.Robinhood": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "token"]], "jarvis.api.modals.settings.StockMonitor": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "stock_list"], [1, 3, 1, "", "user_info"], [1, 3, 1, "", "values"]], "jarvis.api.modals.settings.Surveillance": [[1, 3, 1, "", "available_cameras"], [1, 3, 1, "", "camera_index"], [1, 3, 1, "", "client_id"], [1, 3, 1, "", "frame"], [1, 3, 1, "", "processes"], [1, 3, 1, "", "public_url"], [1, 3, 1, "", "queue_manager"], [1, 3, 1, "", "session_manager"], [1, 3, 1, "", "token"]], "jarvis.api.routers": [[1, 0, 0, "-", "basics"], [1, 0, 0, "-", "fileio"], [1, 0, 0, "-", "helper"], [1, 0, 0, "-", "investment"], [1, 0, 0, "-", "offline"], [1, 0, 0, "-", "speech_synthesis"], [1, 0, 0, "-", "stock_monitor"], [1, 0, 0, "-", "surveillance"]], "jarvis.api.routers.basics": [[1, 1, 1, "", "get_favicon"], [1, 1, 1, "", "health"], [1, 1, 1, "", "redirect_index"]], "jarvis.api.routers.fileio": [[1, 1, 1, "", "get_file"], [1, 1, 1, "", "list_files"], [1, 1, 1, "", "put_file"]], "jarvis.api.routers.helper": [[1, 1, 1, "", "conversations"], [1, 1, 1, "", "keywords"], [1, 1, 1, "", "offline_compatible"]], "jarvis.api.routers.investment": [[1, 1, 1, "", "authenticate_robinhood"], [1, 1, 1, "", "robinhood_path"]], "jarvis.api.routers.offline": [[1, 1, 1, "", "kill_power"], [1, 1, 1, "", "offline_communicator_api"], [1, 1, 1, "", "process_ok_response"]], "jarvis.api.routers.speech_synthesis": [[1, 1, 1, "", "speech_synthesis"], [1, 1, 1, "", "speech_synthesis_voices"]], "jarvis.api.routers.stock_monitor": [[1, 1, 1, "", "apikey_is_allowed"], [1, 1, 1, "", "send_otp_stock_monitor"], [1, 1, 1, "", "stock_monitor_api"]], "jarvis.api.routers.surveillance": [[1, 1, 1, "", "authenticate_surveillance"], [1, 1, 1, "", "monitor"], [1, 1, 1, "", "video_feed"], [1, 1, 1, "", "websocket_endpoint"]], "jarvis.api.server": [[1, 2, 1, "", "APIServer"], [1, 1, 1, "", "fast_api"]], "jarvis.api.server.APIServer": [[1, 4, 1, "", "install_signal_handlers"], [1, 4, 1, "", "run_in_parallel"]], "jarvis.api.squire": [[1, 0, 0, "-", "discover"], [1, 0, 0, "-", "logger"], [1, 0, 0, "-", "scheduler"], [1, 0, 0, "-", "stockmonitor_squire"], [1, 0, 0, "-", "surveillance_squire"], [1, 0, 0, "-", "timeout_otp"]], "jarvis.api.squire.discover": [[1, 2, 1, "", "Entrypoint"], [1, 1, 1, "", "get_entrypoints"], [1, 1, 1, "", "routes"]], "jarvis.api.squire.scheduler": [[1, 2, 1, "", "MarketHours"], [1, 1, 1, "", "rh_cron_schedule"], [1, 1, 1, "", "sm_cron_schedule"]], "jarvis.api.squire.stockmonitor_squire": [[1, 1, 1, "", "cleanup_stock_userdata"], [1, 1, 1, "", "delete_stock_userdata"], [1, 1, 1, "", "get_stock_userdata"], [1, 1, 1, "", "insert_stock_userdata"], [1, 1, 1, "", "nasdaq"], [1, 1, 1, "", "thread_worker"], [1, 1, 1, "", "ticker_gatherer"]], "jarvis.api.squire.surveillance_squire": [[1, 1, 1, "", "gen_frames"], [1, 1, 1, "", "generate_error_frame"], [1, 1, 1, "", "streamer"], [1, 1, 1, "", "test_camera"]], "jarvis.api.squire.timeout_otp": [[1, 1, 1, "", "reset_robinhood"], [1, 1, 1, "", "reset_stock_monitor"], [1, 1, 1, "", "reset_surveillance"]], "jarvis.api.triggers": [[1, 0, 0, "-", "stock_monitor"], [1, 0, 0, "-", "stock_report"]], "jarvis.api.triggers.stock_monitor": [[1, 2, 1, "", "StockMonitor"], [1, 1, 1, "", "generate_graph"]], "jarvis.api.triggers.stock_monitor.StockMonitor": [[1, 4, 1, "", "closest_maximum"], [1, 4, 1, "", "closest_minimum"], [1, 4, 1, "", "get_prices"], [1, 4, 1, "", "group_data"], [1, 4, 1, "", "send_notification"]], "jarvis.api.triggers.stock_report": [[1, 2, 1, "", "Investment"]], "jarvis.api.triggers.stock_report.Investment": [[1, 4, 1, "", "gatherer"], [1, 4, 1, "", "report_gatherer"], [1, 4, 1, "", "watcher"], [1, 4, 1, "", "watchlist"]], "jarvis.executors": [[1, 0, 0, "-", "alarm"], [1, 0, 0, "-", "automation"], [1, 0, 0, "-", "background_task"], [1, 0, 0, "-", "car"], [1, 0, 0, "-", "comm_squire"], [1, 0, 0, "-", "commander"], [1, 0, 0, "-", "communicator"], [1, 0, 0, "-", "conditions"], [1, 0, 0, "-", "connection"], [1, 0, 0, "-", "controls"], [1, 0, 0, "-", "crontab"], [1, 0, 0, "-", "date_time"], [1, 0, 0, "-", "display_functions"], [1, 0, 0, "-", "face"], [1, 0, 0, "-", "files"], [1, 0, 0, "-", "github"], [1, 0, 0, "-", "guard"], [1, 0, 0, "-", "internet"], [1, 0, 0, "-", "ios_functions"], [1, 0, 0, "-", "lights"], [1, 0, 0, "-", "lights_squire"], [1, 0, 0, "-", "listener_controls"], [1, 0, 0, "-", "location"], [1, 0, 0, "-", "myq_controller"], [1, 0, 0, "-", "offline"], [1, 0, 0, "-", "others"], [1, 0, 0, "-", "port_handler"], [1, 0, 0, "-", "processor"], [1, 0, 0, "-", "remind"], [1, 0, 0, "-", "robinhood"], [1, 0, 0, "-", "simulator"], [1, 0, 0, "-", "system"], [1, 0, 0, "-", "telegram"], [1, 0, 0, "-", "todo_list"], [1, 0, 0, "-", "tv"], [1, 0, 0, "-", "tv_controls"], [1, 0, 0, "-", "unconditional"], [1, 0, 0, "-", "volume"], [1, 0, 0, "-", "vpn_server"], [1, 0, 0, "-", "weather"], [1, 0, 0, "-", "weather_monitor"], [1, 0, 0, "-", "wiki"], [1, 0, 0, "-", "word_match"]], "jarvis.executors.alarm": [[1, 1, 1, "", "create_alarm"], [1, 1, 1, "", "executor"], [1, 1, 1, "", "kill_alarm"], [1, 1, 1, "", "set_alarm"]], "jarvis.executors.automation": [[1, 1, 1, "", "auto_helper"], [1, 1, 1, "", "automation_handler"], [1, 1, 1, "", "rewrite_automator"]], "jarvis.executors.background_task": [[1, 1, 1, "", "background_task_handler"], [1, 1, 1, "", "compare_tasks"], [1, 1, 1, "", "remove_corrupted"], [1, 1, 1, "", "validate_tasks"]], "jarvis.executors.car": [[1, 2, 1, "", "Operations"], [1, 1, 1, "", "car"], [1, 1, 1, "", "convert_dt_report"], [1, 1, 1, "", "current_set_temperature"], [1, 1, 1, "", "report"], [1, 1, 1, "", "vehicle"]], "jarvis.executors.car.Operations": [[1, 4, 1, "", "enable_guard"], [1, 4, 1, "", "honk"], [1, 4, 1, "", "locate"], [1, 4, 1, "", "lock"], [1, 4, 1, "", "report"], [1, 4, 1, "", "turn_off"], [1, 4, 1, "", "turn_on"], [1, 4, 1, "", "unlock"]], "jarvis.executors.comm_squire": [[1, 1, 1, "", "extract_contacts"], [1, 1, 1, "", "initiate_email"], [1, 1, 1, "", "initiate_sms"], [1, 1, 1, "", "send_notification"]], "jarvis.executors.commander": [[1, 1, 1, "", "delay_condition"], [1, 1, 1, "", "initialize"], [1, 1, 1, "", "initiator"], [1, 1, 1, "", "renew"], [1, 1, 1, "", "split_phrase"], [1, 1, 1, "", "timed_delay"]], "jarvis.executors.communicator": [[1, 1, 1, "", "read_gmail"], [1, 1, 1, "", "send_email"], [1, 1, 1, "", "send_sms"]], "jarvis.executors.conditions": [[1, 1, 1, "", "conditions"]], "jarvis.executors.connection": [[1, 1, 1, "", "wifi_connector"]], "jarvis.executors.controls": [[1, 1, 1, "", "delete_docker_container"], [1, 1, 1, "", "delete_logs"], [1, 1, 1, "", "delete_pycache"], [1, 1, 1, "", "exit_process"], [1, 1, 1, "", "restart"], [1, 1, 1, "", "restart_control"], [1, 1, 1, "", "sentry"], [1, 1, 1, "", "set_executable"], [1, 1, 1, "", "shutdown"], [1, 1, 1, "", "sleep_control"], [1, 1, 1, "", "starter"], [1, 1, 1, "", "stop_terminals"], [1, 1, 1, "", "terminator"]], "jarvis.executors.crontab": [[1, 1, 1, "", "crontab_executor"]], "jarvis.executors.date_time": [[1, 1, 1, "", "current_date"], [1, 1, 1, "", "current_time"]], "jarvis.executors.display_functions": [[1, 1, 1, "", "brightness"]], "jarvis.executors.face": [[1, 1, 1, "", "detected_face"], [1, 1, 1, "", "faces"]], "jarvis.executors.files": [[1, 1, 1, "", "get_contacts"], [1, 1, 1, "", "get_frequent"], [1, 1, 1, "", "get_location"], [1, 1, 1, "", "put_frequent"]], "jarvis.executors.github": [[1, 1, 1, "", "github"], [1, 1, 1, "", "github_controller"]], "jarvis.executors.guard": [[1, 1, 1, "", "get_state"], [1, 1, 1, "", "guard_disable"], [1, 1, 1, "", "guard_enable"], [1, 1, 1, "", "politely_disable"], [1, 1, 1, "", "put_state"], [1, 1, 1, "", "security_runner"], [1, 1, 1, "", "stop_and_respond"], [1, 1, 1, "", "threat_notify"]], "jarvis.executors.internet": [[1, 1, 1, "", "get_connection_info"], [1, 1, 1, "", "ip_address"], [1, 1, 1, "", "ip_info"], [1, 1, 1, "", "public_ip_info"], [1, 1, 1, "", "speed_test"], [1, 1, 1, "", "vpn_checker"]], "jarvis.executors.ios_functions": [[1, 1, 1, "", "device_selector"], [1, 1, 1, "", "locate"], [1, 1, 1, "", "locate_device"], [1, 1, 1, "", "location_services"]], "jarvis.executors.lights": [[1, 2, 1, "", "ThreadExecutor"], [1, 1, 1, "", "cool"], [1, 1, 1, "", "lights"], [1, 1, 1, "", "lumen"], [1, 1, 1, "", "turn_off"], [1, 1, 1, "", "warm"]], "jarvis.executors.lights.ThreadExecutor": [[1, 4, 1, "", "avail_check"], [1, 4, 1, "", "thread_worker"]], "jarvis.executors.lights_squire": [[1, 1, 1, "", "check_status"], [1, 1, 1, "", "party_mode"], [1, 1, 1, "", "preset"], [1, 1, 1, "", "remove_status"], [1, 1, 1, "", "runner"], [1, 1, 1, "", "update_status"]], "jarvis.executors.listener_controls": [[1, 1, 1, "", "get_listener_state"], [1, 1, 1, "", "listener_control"], [1, 1, 1, "", "put_listener_state"]], "jarvis.executors.location": [[1, 1, 1, "", "directions"], [1, 1, 1, "", "distance"], [1, 1, 1, "", "distance_controller"], [1, 1, 1, "", "get_coordinates_from_ip"], [1, 1, 1, "", "get_location_from_coordinates"], [1, 1, 1, "", "locate_places"], [1, 1, 1, "", "location"], [1, 1, 1, "", "write_current_location"]], "jarvis.executors.myq_controller": [[1, 2, 1, "", "AsyncThread"], [1, 1, 1, "", "garage"], [1, 1, 1, "", "run_async"]], "jarvis.executors.myq_controller.AsyncThread": [[1, 4, 1, "", "run"]], "jarvis.executors.offline": [[1, 1, 1, "", "background_tasks"], [1, 1, 1, "", "get_tunnel"], [1, 1, 1, "", "offline_communicator"], [1, 1, 1, "", "on_demand_offline_automation"], [1, 1, 1, "", "tunneling"]], "jarvis.executors.others": [[1, 1, 1, "", "abusive"], [1, 1, 1, "", "apps"], [1, 1, 1, "", "facts"], [1, 1, 1, "", "flip_a_coin"], [1, 1, 1, "", "google_home"], [1, 1, 1, "", "jokes"], [1, 1, 1, "", "meaning"], [1, 1, 1, "", "music"], [1, 1, 1, "", "news"], [1, 1, 1, "", "notes"], [1, 1, 1, "", "photo"], [1, 1, 1, "", "pypi_versions"], [1, 1, 1, "", "repeat"], [1, 1, 1, "", "report"], [1, 1, 1, "", "time_travel"], [1, 1, 1, "", "version"]], "jarvis.executors.port_handler": [[1, 1, 1, "", "is_port_in_use"], [1, 1, 1, "", "kill_port_pid"]], "jarvis.executors.processor": [[1, 1, 1, "", "clear_db"], [1, 1, 1, "", "create_process_mapping"], [1, 1, 1, "", "delete_db"], [1, 1, 1, "", "start_processes"], [1, 1, 1, "", "stop_child_processes"], [1, 1, 1, "", "stop_processes"]], "jarvis.executors.remind": [[1, 1, 1, "", "create_reminder"], [1, 1, 1, "", "executor"], [1, 1, 1, "", "find_name"], [1, 1, 1, "", "reminder"]], "jarvis.executors.robinhood": [[1, 1, 1, "", "robinhood"], [1, 1, 1, "", "watcher"]], "jarvis.executors.simulator": [[1, 1, 1, "", "get_simulation_data"], [1, 1, 1, "", "initiate_simulator"], [1, 1, 1, "", "run_simulation"]], "jarvis.executors.system": [[1, 1, 1, "", "get_distributor_info_linux"], [1, 1, 1, "", "hosted_device_info"], [1, 1, 1, "", "system_info"], [1, 1, 1, "", "system_vitals"]], "jarvis.executors.telegram": [[1, 1, 1, "", "telegram_api"]], "jarvis.executors.todo_list": [[1, 1, 1, "", "add_todo"], [1, 1, 1, "", "delete_todo"], [1, 1, 1, "", "delete_todo_items"], [1, 1, 1, "", "get_todo"], [1, 1, 1, "", "todo"]], "jarvis.executors.tv": [[1, 1, 1, "", "television"], [1, 1, 1, "", "tv_status"]], "jarvis.executors.tv_controls": [[1, 1, 1, "", "tv_controller"]], "jarvis.executors.unconditional": [[1, 1, 1, "", "alpha"], [1, 1, 1, "", "google_maps"]], "jarvis.executors.volume": [[1, 1, 1, "", "main_volume"], [1, 1, 1, "", "speaker_volume"], [1, 1, 1, "", "volume"]], "jarvis.executors.vpn_server": [[1, 1, 1, "", "extract_custom_region"], [1, 1, 1, "", "regional_phrase"], [1, 1, 1, "", "vpn_server"], [1, 1, 1, "", "vpn_server_switch"]], "jarvis.executors.weather": [[1, 1, 1, "", "weather"]], "jarvis.executors.weather_monitor": [[1, 1, 1, "", "monitor"]], "jarvis.executors.wiki": [[1, 1, 1, "", "wikipedia_"]], "jarvis.executors.word_match": [[1, 1, 1, "", "forward_lookup"], [1, 1, 1, "", "reverse_lookup"], [1, 1, 1, "", "word_match"]], "jarvis": [[1, 0, 0, "-", "main"]], "jarvis.main": [[1, 2, 1, "", "Activator"], [1, 1, 1, "", "restart_checker"], [1, 1, 1, "", "start"]], "jarvis.main.Activator": [[1, 4, 1, "", "executor"], [1, 4, 1, "", "open_stream"], [1, 4, 1, "", "start"], [1, 4, 1, "", "stop"]], "jarvis.modules.audio": [[1, 0, 0, "-", "listener"], [1, 0, 0, "-", "speaker"], [1, 0, 0, "-", "speech_synthesis"], [1, 0, 0, "-", "tts_stt"], [1, 0, 0, "-", "voices"]], "jarvis.modules.audio.listener": [[1, 1, 1, "", "listen"]], "jarvis.modules.audio.speaker": [[1, 1, 1, "", "frequently_used"], [1, 1, 1, "", "speak"], [1, 1, 1, "", "speech_synthesizer"]], "jarvis.modules.audio.speech_synthesis": [[1, 1, 1, "", "check_existing"], [1, 1, 1, "", "speech_synthesizer"]], "jarvis.modules.audio.tts_stt": [[1, 1, 1, "", "audio_to_text"], [1, 1, 1, "", "generate_audio_file"], [1, 1, 1, "", "text_to_audio"]], "jarvis.modules.audio.voices": [[1, 1, 1, "", "voice_changer"], [1, 1, 1, "", "voice_default"]], "jarvis.modules": [[1, 0, 0, "-", "auth_bearer"], [1, 0, 0, "-", "exceptions"], [1, 0, 0, "-", "peripherals"]], "jarvis.modules.auth_bearer": [[1, 2, 1, "", "BearerAuth"]], "jarvis.modules.camera": [[1, 0, 0, "-", "camera"]], "jarvis.modules.camera.camera": [[1, 2, 1, "", "Camera"], [1, 1, 1, "", "list_splitter"]], "jarvis.modules.camera.camera.Camera": [[1, 4, 1, "", "_get_camera_info_darwin"], [1, 4, 1, "", "_get_camera_info_linux"], [1, 4, 1, "", "_get_camera_info_windows"], [1, 4, 1, "", "_list_cameras_darwin"], [1, 4, 1, "", "_list_cameras_linux"], [1, 4, 1, "", "_list_cameras_windows"], [1, 4, 1, "", "get_camera_info"], [1, 4, 1, "", "get_index"], [1, 4, 1, "", "list_cameras"]], "jarvis.modules.car": [[1, 0, 0, "-", "connector"], [1, 0, 0, "-", "controller"]], "jarvis.modules.car.connector": [[1, 2, 1, "", "Connect"], [1, 1, 1, "", "_open"]], "jarvis.modules.car.connector.Connect": [[1, 4, 1, "", "_authenticate"], [1, 4, 1, "", "_login_user"], [1, 4, 1, "", "_register_auth"], [1, 4, 1, "", "_register_device"], [1, 4, 1, "", "_register_device_and_log_in"], [1, 4, 1, "", "_set_header"], [1, 4, 1, "", "connect"], [1, 4, 1, "", "get_user_info"], [1, 4, 1, "", "get_vehicles"], [1, 4, 1, "", "post_data"], [1, 4, 1, "", "refresh_tokens"], [1, 4, 1, "", "update_user_info"]], "jarvis.modules.car.controller": [[1, 2, 1, "", "Control"]], "jarvis.modules.car.controller.Control": [[1, 4, 1, "", "_authenticate_service"], [1, 4, 1, "", "_authenticate_vin_protected_service"], [1, 4, 1, "", "_charging_profile_control"], [1, 4, 1, "", "_preconditioning_control"], [1, 4, 1, "", "_prov_command"], [1, 4, 1, "", "_set_wakeup"], [1, 4, 1, "", "add_charging_period"], [1, 4, 1, "", "add_departure_timer"], [1, 4, 1, "", "add_repeated_departure_timer"], [1, 4, 1, "", "charging_start"], [1, 4, 1, "", "charging_stop"], [1, 4, 1, "", "climate_prioritize"], [1, 4, 1, "", "delete_departure_timer"], [1, 4, 1, "", "delete_wakeup_time"], [1, 4, 1, "", "disable_privacy_mode"], [1, 4, 1, "", "enable_guardian_mode"], [1, 4, 1, "", "enable_privacy_mode"], [1, 4, 1, "", "enable_service_mode"], [1, 4, 1, "", "enable_transport_mode"], [1, 4, 1, "", "get_attributes"], [1, 4, 1, "", "get_contact_info"], [1, 4, 1, "", "get_departure_timers"], [1, 4, 1, "", "get_guardian_mode_alarms"], [1, 4, 1, "", "get_guardian_mode_alerts"], [1, 4, 1, "", "get_guardian_mode_settings_system"], [1, 4, 1, "", "get_guardian_mode_settings_user"], [1, 4, 1, "", "get_guardian_mode_status"], [1, 4, 1, "", "get_health_status"], [1, 4, 1, "", "get_position"], [1, 4, 1, "", "get_rcc_target_value"], [1, 4, 1, "", "get_service_status"], [1, 4, 1, "", "get_services"], [1, 4, 1, "", "get_status"], [1, 4, 1, "", "get_subscription_packages"], [1, 4, 1, "", "get_trip"], [1, 4, 1, "", "get_trips"], [1, 4, 1, "", "get_wakeup_time"], [1, 4, 1, "", "honk_blink"], [1, 4, 1, "", "lock"], [1, 4, 1, "", "post_data"], [1, 4, 1, "", "preconditioning_start"], [1, 4, 1, "", "preconditioning_stop"], [1, 4, 1, "", "remote_engine_start"], [1, 4, 1, "", "remote_engine_stop"], [1, 4, 1, "", "reset_alarm"], [1, 4, 1, "", "set_attributes"], [1, 4, 1, "", "set_max_soc"], [1, 4, 1, "", "set_one_off_max_soc"], [1, 4, 1, "", "set_rcc_target_temperature"], [1, 4, 1, "", "set_wakeup_time"], [1, 4, 1, "", "unlock"]], "jarvis.modules.conditions": [[1, 0, 0, "-", "conversation"], [1, 0, 0, "-", "keywords"], [1, 0, 0, "-", "keywords_base"]], "jarvis.modules.conditions.keywords": [[1, 2, 1, "", "Keywords"]], "jarvis.modules.conditions.keywords_base": [[1, 1, 1, "", "keyword_mapping"]], "jarvis.modules.crontab": [[1, 0, 0, "-", "expression"]], "jarvis.modules.crontab.expression": [[1, 2, 1, "", "CronExpression"], [1, 1, 1, "", "parse_atom"]], "jarvis.modules.crontab.expression.CronExpression": [[1, 3, 1, "", "DAYS_OF_MONTH"], [1, 3, 1, "", "DAYS_OF_WEEK"], [1, 3, 1, "", "DAY_NAMES"], [1, 3, 1, "", "DEFAULT_EPOCH"], [1, 3, 1, "", "FIELD_RANGES"], [1, 3, 1, "", "HOURS"], [1, 3, 1, "", "L_FIELDS"], [1, 3, 1, "", "MINUTES"], [1, 3, 1, "", "MONTHS"], [1, 3, 1, "", "MONTH_NAMES"], [1, 3, 1, "", "SUBSTITUTIONS"], [1, 4, 1, "", "check_trigger"], [1, 4, 1, "", "compute_numtab"]], "jarvis.modules.database": [[1, 0, 0, "-", "database"]], "jarvis.modules.database.database": [[1, 2, 1, "", "Database"], [1, 2, 1, "", "__TestDatabase"]], "jarvis.modules.database.database.Database": [[1, 4, 1, "", "create_table"]], "jarvis.modules.database.database.__TestDatabase": [[1, 4, 1, "", "random_double"], [1, 4, 1, "", "random_single"]], "jarvis.modules.dictionary": [[1, 0, 0, "-", "dictionary"]], "jarvis.modules.dictionary.dictionary": [[1, 1, 1, "", "meaning"]], "jarvis.modules.exceptions": [[1, 5, 1, "", "APIResponse"], [1, 5, 1, "", "BotInUse"], [1, 5, 1, "", "CameraError"], [1, 5, 1, "", "CoverNotOnline"], [1, 5, 1, "", "InvalidArgument"], [1, 5, 1, "", "InvalidEnvVars"], [1, 5, 1, "", "MissingEnvVars"], [1, 5, 1, "", "NoCoversFound"], [1, 5, 1, "", "SegmentationError"], [1, 5, 1, "", "StopSignal"], [1, 5, 1, "", "TVError"], [1, 5, 1, "", "UnsupportedOS"], [1, 1, 1, "", "no_alsa_err"], [1, 1, 1, "", "py_error_handler"]], "jarvis.modules.facenet": [[1, 0, 0, "-", "face"]], "jarvis.modules.facenet.face": [[1, 2, 1, "", "FaceNet"], [1, 1, 1, "", "condition_check"], [1, 1, 1, "", "verify_image"]], "jarvis.modules.facenet.face.FaceNet": [[1, 3, 1, "", "LEARNING_RATE"], [1, 3, 1, "", "MODEL"], [1, 4, 1, "", "capture_image"], [1, 4, 1, "", "face_detection"], [1, 4, 1, "", "face_recognition"], [1, 4, 1, "", "load_dataset"]], "jarvis.modules.lights": [[1, 0, 0, "-", "preset_values"], [1, 0, 0, "-", "smart_lights"]], "jarvis.modules.lights.smart_lights": [[1, 2, 1, "", "MagicHomeApi"], [1, 1, 1, "", "calculate_checksum"], [1, 1, 1, "", "check_number_range"]], "jarvis.modules.lights.smart_lights.MagicHomeApi": [[1, 3, 1, "", "API_PORT"], [1, 4, 1, "", "get_status"], [1, 4, 1, "", "send_bytes"], [1, 4, 1, "", "send_preset_function"], [1, 4, 1, "", "turn_off"], [1, 4, 1, "", "turn_on"], [1, 4, 1, "", "update_device"]], "jarvis.modules.logger.config": [[1, 2, 1, "", "APIConfig"], [1, 2, 1, "", "AddProcessName"], [1, 2, 1, "", "multiprocessing_logger"]], "jarvis.modules.logger.config.AddProcessName": [[1, 4, 1, "", "filter"]], "jarvis.modules.logger": [[1, 0, 0, "-", "custom_logger"]], "jarvis.modules.logger.custom_logger": [[1, 2, 1, "", "TestLogger"], [1, 1, 1, "", "custom_handler"], [1, 1, 1, "", "log_file"]], "jarvis.modules.logger.custom_logger.TestLogger": [[1, 4, 1, "", "custom_time"], [1, 4, 1, "", "test_log"]], "jarvis.modules.meetings": [[1, 0, 0, "-", "events"], [1, 0, 0, "-", "ics"], [1, 0, 0, "-", "ics_meetings"]], "jarvis.modules.meetings.events": [[1, 1, 1, "", "event_app_launcher"], [1, 1, 1, "", "events"], [1, 1, 1, "", "events_gatherer"], [1, 1, 1, "", "events_writer"]], "jarvis.modules.meetings.ics": [[1, 2, 1, "", "ICS"], [1, 1, 1, "", "all_day_event"], [1, 1, 1, "", "convert_to_local_tz"], [1, 1, 1, "", "parse_calendar"]], "jarvis.modules.meetings.ics.ICS": [[1, 3, 1, "", "all_day"], [1, 3, 1, "", "duration"], [1, 3, 1, "", "end"], [1, 3, 1, "", "start"], [1, 3, 1, "", "summary"]], "jarvis.modules.meetings.ics_meetings": [[1, 1, 1, "", "custom_meetings"], [1, 1, 1, "", "meetings"], [1, 1, 1, "", "meetings_gatherer"], [1, 1, 1, "", "meetings_writer"]], "jarvis.modules.microphone": [[1, 0, 0, "-", "graph_mic"], [1, 0, 0, "-", "recognizer"]], "jarvis.modules.microphone.graph_mic": [[1, 2, 1, "", "Settings"], [1, 1, 1, "", "_kick_off"], [1, 1, 1, "", "audio_callback"], [1, 1, 1, "", "list_devices"], [1, 1, 1, "", "plot_mic"], [1, 1, 1, "", "update_plot"]], "jarvis.modules.microphone.graph_mic.Settings": [[1, 3, 1, "", "channels"], [1, 3, 1, "", "dark_mode"], [1, 3, 1, "", "device"], [1, 3, 1, "", "down_sample"], [1, 3, 1, "", "interval"], [1, 3, 1, "", "lines"], [1, 3, 1, "", "mapping"], [1, 3, 1, "", "plot_data"], [1, 3, 1, "", "rate"], [1, 3, 1, "", "samplerate"], [1, 3, 1, "", "window"], [1, 3, 1, "", "window_size"]], "jarvis.modules.microphone.recognizer": [[1, 1, 1, "", "main"], [1, 1, 1, "", "save_for_reference"]], "jarvis.modules.models.classes": [[1, 2, 1, "", "BackgroundTask"], [1, 2, 1, "", "EnvConfig"], [1, 2, 1, "", "EventApp"], [1, 2, 1, "", "FileIO"], [1, 2, 1, "", "Indicators"], [1, 2, 1, "", "RecognizerSettings"], [1, 2, 1, "", "SSQuality"], [1, 2, 1, "", "Sensitivity"], [1, 2, 1, "", "Settings"]], "jarvis.modules.models.classes.BackgroundTask": [[1, 3, 1, "", "_abc_impl"], [1, 4, 1, "", "check_empty_string"], [1, 4, 1, "", "check_hours_format"], [1, 3, 1, "", "ignore_hours"], [1, 3, 1, "", "seconds"], [1, 3, 1, "", "task"]], "jarvis.modules.models.classes.EnvConfig": [[1, 2, 1, "", "Config"], [1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "_rate"], [1, 3, 1, "", "author_mode"], [1, 3, 1, "", "birthday"], [1, 3, 1, "", "bot_chat_ids"], [1, 3, 1, "", "bot_token"], [1, 3, 1, "", "bot_users"], [1, 3, 1, "", "camera_index"], [1, 3, 1, "", "car_email"], [1, 3, 1, "", "car_pass"], [1, 3, 1, "", "car_pin"], [1, 3, 1, "", "connection_retry"], [1, 3, 1, "", "crontab"], [1, 3, 1, "", "debug"], [1, 3, 1, "", "event_app"], [1, 3, 1, "", "git_pass"], [1, 3, 1, "", "git_user"], [1, 3, 1, "", "gmail_pass"], [1, 3, 1, "", "gmail_user"], [1, 3, 1, "", "home"], [1, 3, 1, "", "icloud_pass"], [1, 3, 1, "", "icloud_recovery"], [1, 3, 1, "", "icloud_user"], [1, 3, 1, "", "ics_url"], [1, 3, 1, "", "limited"], [1, 3, 1, "", "log_retention"], [1, 3, 1, "", "maps_api"], [1, 3, 1, "", "microphone_index"], [1, 3, 1, "", "mute_for_meetings"], [1, 3, 1, "", "myq_password"], [1, 3, 1, "", "myq_username"], [1, 3, 1, "", "name"], [1, 3, 1, "", "news_api"], [1, 3, 1, "", "offline_host"], [1, 3, 1, "", "offline_pass"], [1, 3, 1, "", "offline_port"], [1, 3, 1, "", "open_gmail_pass"], [1, 3, 1, "", "open_gmail_user"], [1, 4, 1, "", "parse_birthday"], [1, 4, 1, "", "parse_microphone_index"], [1, 4, 1, "", "parse_speaker_index"], [1, 4, 1, "", "parse_weather_alert"], [1, 3, 1, "", "phone_number"], [1, 3, 1, "", "phrase_limit"], [1, 3, 1, "", "plot_mic"], [1, 3, 1, "", "recipient"], [1, 3, 1, "", "recognizer_settings"], [1, 3, 1, "", "robinhood_endpoint_auth"], [1, 3, 1, "", "robinhood_pass"], [1, 3, 1, "", "robinhood_qr"], [1, 3, 1, "", "robinhood_user"], [1, 3, 1, "", "root_password"], [1, 3, 1, "", "root_user"], [1, 3, 1, "", "sensitivity"], [1, 3, 1, "", "speaker_index"], [1, 3, 1, "", "speech_synthesis_host"], [1, 3, 1, "", "speech_synthesis_port"], [1, 3, 1, "", "speech_synthesis_quality"], [1, 3, 1, "", "speech_synthesis_timeout"], [1, 3, 1, "", "speech_synthesis_voice"], [1, 3, 1, "", "stock_monitor_api"], [1, 3, 1, "", "surveillance_endpoint_auth"], [1, 3, 1, "", "surveillance_session_timeout"], [1, 3, 1, "", "sync_events"], [1, 3, 1, "", "sync_meetings"], [1, 3, 1, "", "timeout"], [1, 3, 1, "", "title"], [1, 3, 1, "", "voice_name"], [1, 3, 1, "", "voice_rate"], [1, 3, 1, "", "volume"], [1, 3, 1, "", "vpn_domain"], [1, 3, 1, "", "vpn_password"], [1, 3, 1, "", "vpn_record_name"], [1, 3, 1, "", "vpn_username"], [1, 3, 1, "", "wake_words"], [1, 3, 1, "", "weather_alert"], [1, 3, 1, "", "weather_api"], [1, 3, 1, "", "website"], [1, 3, 1, "", "wifi_password"], [1, 3, 1, "", "wifi_ssid"], [1, 3, 1, "", "wolfram_api"], [1, 3, 1, "", "workers"]], "jarvis.modules.models.classes.EnvConfig.Config": [[1, 3, 1, "", "env_file"], [1, 3, 1, "", "env_prefix"]], "jarvis.modules.models.classes.EventApp": [[1, 3, 1, "", "CALENDAR"], [1, 3, 1, "", "OUTLOOK"], [1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"]], "jarvis.modules.models.classes.FileIO": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "app_launcher"], [1, 3, 1, "", "automation"], [1, 3, 1, "", "background_tasks"], [1, 3, 1, "", "base_db"], [1, 3, 1, "", "contacts"], [1, 3, 1, "", "event_script"], [1, 3, 1, "", "frequent"], [1, 3, 1, "", "location"], [1, 3, 1, "", "notes"], [1, 3, 1, "", "processes"], [1, 3, 1, "", "robinhood"], [1, 3, 1, "", "root"], [1, 3, 1, "", "simulation"], [1, 3, 1, "", "smart_devices"], [1, 3, 1, "", "speech_synthesis_id"], [1, 3, 1, "", "speech_synthesis_log"], [1, 3, 1, "", "speech_synthesis_wav"], [1, 3, 1, "", "stock_db"], [1, 3, 1, "", "stock_list_backup"], [1, 3, 1, "", "task_db"], [1, 3, 1, "", "tmp_automation"], [1, 3, 1, "", "tmp_background_tasks"], [1, 3, 1, "", "training_data"]], "jarvis.modules.models.classes.Indicators": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "acknowledgement"], [1, 3, 1, "", "alarm"], [1, 3, 1, "", "coin"], [1, 3, 1, "", "end"], [1, 3, 1, "", "exhaust"], [1, 3, 1, "", "start"], [1, 3, 1, "", "tv_connect"], [1, 3, 1, "", "tv_scan"]], "jarvis.modules.models.classes.RecognizerSettings": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "dynamic_energy_threshold"], [1, 3, 1, "", "energy_threshold"], [1, 3, 1, "", "non_speaking_duration"], [1, 3, 1, "", "pause_threshold"], [1, 3, 1, "", "phrase_threshold"]], "jarvis.modules.models.classes.SSQuality": [[1, 3, 1, "", "High_Quality"], [1, 3, 1, "", "Low_Quality"], [1, 3, 1, "", "Medium_Quality"], [1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"]], "jarvis.modules.models.classes.Sensitivity": [[1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"], [1, 3, 1, "", "sensitivity"]], "jarvis.modules.models.classes.Settings": [[1, 3, 1, "", "_abc_impl"], [1, 3, 1, "", "bot"], [1, 3, 1, "", "invoker"], [1, 3, 1, "", "limited"], [1, 3, 1, "", "logical_cores"], [1, 3, 1, "", "os"], [1, 3, 1, "", "physical_cores"], [1, 3, 1, "", "pid"], [1, 3, 1, "", "ram"], [1, 3, 1, "", "wake_words"]], "jarvis.modules.models": [[1, 0, 0, "-", "models"]], "jarvis.modules.models.models": [[1, 1, 1, "", "_global_validations"], [1, 1, 1, "", "_main_process_validations"], [1, 1, 1, "", "_set_default_voice_name"]], "jarvis.modules.myq": [[1, 0, 0, "-", "myq"]], "jarvis.modules.myq.myq": [[1, 2, 1, "", "Operation"], [1, 1, 1, "", "garage_controller"], [1, 3, 1, "", "operation"]], "jarvis.modules.myq.myq.Operation": [[1, 3, 1, "", "CLOSE"], [1, 3, 1, "", "CLOSED"], [1, 3, 1, "", "CLOSING"], [1, 3, 1, "", "OPEN"], [1, 3, 1, "", "OPENING"], [1, 3, 1, "", "STATE"], [1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"]], "jarvis.modules.offline": [[1, 0, 0, "-", "compatibles"]], "jarvis.modules.offline.compatibles": [[1, 1, 1, "", "offline_compatible"]], "jarvis.modules.peripherals": [[1, 2, 1, "", "ChannelType"], [1, 3, 1, "", "channel_type"], [1, 1, 1, "", "get_audio_devices"]], "jarvis.modules.peripherals.ChannelType": [[1, 4, 1, "", "_generate_next_value_"], [1, 3, 1, "", "_member_map_"], [1, 3, 1, "", "_member_names_"], [1, 3, 1, "", "_member_type_"], [1, 3, 1, "", "_value2member_map_"], [1, 3, 1, "", "input_channels"], [1, 3, 1, "", "output_channels"]], "jarvis.modules.retry": [[1, 0, 0, "-", "retry"]], "jarvis.modules.retry.retry": [[1, 1, 1, "", "retry"]], "jarvis.modules.speaker": [[1, 0, 0, "-", "speak"]], "jarvis.modules.speaker.speak": [[1, 2, 1, "", "Speaker"]], "jarvis.modules.speaker.speak.Speaker": [[1, 4, 1, "", "get_all_voices"], [1, 4, 1, "", "get_english_voices"], [1, 4, 1, "", "get_voice_by_gender"], [1, 4, 1, "", "get_voice_by_index"], [1, 4, 1, "", "get_voice_by_language"], [1, 4, 1, "", "get_voice_by_name"], [1, 4, 1, "", "run"], [1, 4, 1, "", "set_voice"], [1, 4, 1, "", "speak_all_voices"], [1, 4, 1, "", "speak_english_voices"]], "jarvis.modules.telegram": [[1, 0, 0, "-", "audio_handler"], [1, 0, 0, "-", "bot"], [1, 0, 0, "-", "file_handler"]], "jarvis.modules.telegram.audio_handler": [[1, 1, 1, "", "audio_converter_mac"], [1, 1, 1, "", "audio_converter_win"]], "jarvis.modules.telegram.bot": [[1, 2, 1, "", "TelegramBot"], [1, 1, 1, "", "get_title_by_name"], [1, 1, 1, "", "greeting"], [1, 1, 1, "", "intro"], [1, 1, 1, "", "username_is_valid"]], "jarvis.modules.telegram.bot.TelegramBot": [[1, 3, 1, "", "FILE_CONTENT_URL"], [1, 4, 1, "", "_get_file"], [1, 4, 1, "", "_make_request"], [1, 4, 1, "", "authenticate"], [1, 4, 1, "", "executor"], [1, 4, 1, "", "jarvis"], [1, 4, 1, "", "poll_for_messages"], [1, 4, 1, "", "process_document"], [1, 4, 1, "", "process_response"], [1, 4, 1, "", "process_text"], [1, 4, 1, "", "process_voice"], [1, 4, 1, "", "reply_to"], [1, 4, 1, "", "send_audio"], [1, 4, 1, "", "send_document"], [1, 4, 1, "", "send_message"], [1, 4, 1, "", "send_photo"], [1, 4, 1, "", "verify_stop"], [1, 4, 1, "", "verify_timeout"]], "jarvis.modules.telegram.file_handler": [[1, 1, 1, "", "_list_files"], [1, 1, 1, "", "get_file"], [1, 1, 1, "", "list_files"], [1, 1, 1, "", "put_file"]], "jarvis.modules.temperature": [[1, 0, 0, "-", "temperature"]], "jarvis.modules.temperature.temperature": [[1, 1, 1, "", "c2f"], [1, 1, 1, "", "c2k"], [1, 1, 1, "", "f2c"], [1, 1, 1, "", "f2k"], [1, 1, 1, "", "k2c"], [1, 1, 1, "", "k2f"]], "jarvis.modules.templates": [[1, 0, 0, "-", "templates"]], "jarvis.modules.templates.templates": [[1, 2, 1, "", "EmailTemplates"], [1, 2, 1, "", "EndpointTemplates"], [1, 2, 1, "", "GenericTemplates"], [1, 3, 1, "", "email"], [1, 3, 1, "", "endpoint"], [1, 3, 1, "", "generic"]], "jarvis.modules.timeout": [[1, 0, 0, "-", "timeout"]], "jarvis.modules.timeout.timeout": [[1, 1, 1, "", "timeout"]], "jarvis.modules.tv": [[1, 0, 0, "-", "lg"], [1, 0, 0, "-", "roku"]], "jarvis.modules.tv.lg": [[1, 2, 1, "", "LGWebOS"]], "jarvis.modules.tv.lg.LGWebOS": [[1, 3, 1, "", "_init_status"], [1, 3, 1, "", "_reconnect"], [1, 4, 1, "", "audio_output"], [1, 4, 1, "", "audio_output_source"], [1, 4, 1, "", "close_app"], [1, 4, 1, "", "current_app"], [1, 4, 1, "", "decrease_volume"], [1, 4, 1, "", "forward"], [1, 4, 1, "", "get_apps"], [1, 4, 1, "", "get_sources"], [1, 4, 1, "", "get_volume"], [1, 4, 1, "", "increase_volume"], [1, 4, 1, "", "launch_app"], [1, 4, 1, "", "mute"], [1, 4, 1, "", "pause"], [1, 4, 1, "", "play"], [1, 4, 1, "", "rewind"], [1, 4, 1, "", "set_audio_output_source"], [1, 4, 1, "", "set_source"], [1, 4, 1, "", "set_volume"], [1, 4, 1, "", "shutdown"], [1, 4, 1, "", "stop"]], "jarvis.modules.tv.roku": [[1, 2, 1, "", "RokuECP"]], "jarvis.modules.tv.roku.RokuECP": [[1, 3, 1, "", "PORT"], [1, 3, 1, "", "SESSION"], [1, 4, 1, "", "_set_vol_executor"], [1, 4, 1, "", "current_app"], [1, 4, 1, "", "decrease_volume"], [1, 4, 1, "", "forward"], [1, 4, 1, "", "get_apps"], [1, 4, 1, "", "get_sources"], [1, 4, 1, "", "get_state"], [1, 4, 1, "", "get_volume"], [1, 4, 1, "", "increase_volume"], [1, 4, 1, "", "launch_app"], [1, 4, 1, "", "make_call"], [1, 4, 1, "", "mute"], [1, 4, 1, "", "pause"], [1, 4, 1, "", "play"], [1, 4, 1, "", "rewind"], [1, 4, 1, "", "set_source"], [1, 4, 1, "", "set_volume"], [1, 4, 1, "", "shutdown"], [1, 4, 1, "", "startup"], [1, 4, 1, "", "stop"]], "jarvis.modules.utils": [[1, 0, 0, "-", "shared"], [1, 0, 0, "-", "support"], [1, 0, 0, "-", "util"]], "jarvis.modules.utils.support": [[1, 1, 1, "", "build_lookup"], [1, 1, 1, "", "celebrate"], [1, 1, 1, "", "check_restart"], [1, 1, 1, "", "check_stop"], [1, 1, 1, "", "connected_to_network"], [1, 1, 1, "", "country_timezone"], [1, 1, 1, "", "detect_lookup_date"], [1, 1, 1, "", "exit_message"], [1, 1, 1, "", "flush_screen"], [1, 1, 1, "", "get_capitalized"], [1, 1, 1, "", "hostname_to_ip"], [1, 1, 1, "", "humanized_day_to_datetime"], [1, 1, 1, "", "lock_files"], [1, 1, 1, "", "no_env_vars"], [1, 1, 1, "", "number_to_words"], [1, 1, 1, "", "pluralize"], [1, 1, 1, "", "remove_file"], [1, 1, 1, "", "size_converter"], [1, 1, 1, "", "stop_process"], [1, 1, 1, "", "time_converter"], [1, 1, 1, "", "unrecognized_dumper"], [1, 1, 1, "", "unsupported_features"], [1, 1, 1, "", "utc_to_local"]], "jarvis.modules.utils.util": [[1, 2, 1, "", "Dict2Class"], [1, 1, 1, "", "block_print"], [1, 1, 1, "", "comma_separator"], [1, 1, 1, "", "delay_calculator"], [1, 1, 1, "", "extract_nos"], [1, 1, 1, "", "extract_str"], [1, 1, 1, "", "extract_time"], [1, 1, 1, "", "format_nos"], [1, 1, 1, "", "get_closest_match"], [1, 1, 1, "", "get_free_port"], [1, 1, 1, "", "get_timezone"], [1, 1, 1, "", "hashed"], [1, 1, 1, "", "keygen_str"], [1, 1, 1, "", "keygen_uuid"], [1, 1, 1, "", "kms_to_miles"], [1, 1, 1, "", "matrix_to_flat_list"], [1, 1, 1, "", "part_of_day"], [1, 1, 1, "", "release_print"], [1, 1, 1, "", "remove_duplicates"], [1, 1, 1, "", "token"], [1, 1, 1, "", "words_to_number"], [1, 1, 1, "", "write_screen"]], "jarvis.modules.wakeonlan": [[1, 0, 0, "-", "wakeonlan"]], "jarvis.modules.wakeonlan.wakeonlan": [[1, 2, 1, "", "WakeOnLan"]], "jarvis.modules.wakeonlan.wakeonlan.WakeOnLan": [[1, 3, 1, "", "BROADCAST_IP"], [1, 3, 1, "", "DEFAULT_PORT"], [1, 4, 1, "", "create_packet"], [1, 4, 1, "", "send_packet"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:attribute", "4": "py:method", "5": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "method", "Python method"], "5": ["py", "exception", "Python exception"]}, "titleterms": {"kick": 0, "off": 0, "prerequisit": 0, "test": [0, 1], "peripher": 0, "env": 0, "variabl": 0, "featur": 0, "background": [0, 1], "task": [0, 1], "contact": 0, "smart": 0, "devic": [0, 1], "autom": [0, 1], "setup": 0, "option": 0, "simul": [0, 1], "guid": 0, "faq": 0, "code": 0, "standard": 0, "releas": 0, "note": 0, "lint": 0, "pypi": 0, "packag": 0, "runbook": 0, "licens": 0, "copyright": 0, "welcom": 1, "jarvi": 1, "": 1, "document": 1, "read": 1, "me": 1, "preflight": 1, "camera": 1, "audio": 1, "text": 1, "To": 1, "speech": 1, "realtim": 1, "microphon": 1, "usag": 1, "main": 1, "modul": 1, "keyword": 1, "classifi": 1, "api": 1, "applic": 1, "server": 1, "modal": 1, "authent": 1, "model": 1, "set": 1, "router": 1, "basic": 1, "fileio": 1, "helper": 1, "invest": 1, "offlin": 1, "speechsynthesi": 1, "stockmonitor": 1, "surveil": 1, "squir": 1, "discov": 1, "logger": 1, "schedul": 1, "timeout": 1, "otp": 1, "trigger": 1, "stockreport": 1, "executor": 1, "alarm": 1, "car": 1, "commun": 1, "connect": 1, "condit": 1, "command": 1, "control": 1, "crontab": 1, "datetim": 1, "displayfunct": 1, "face": 1, "file": 1, "garag": 1, "door": 1, "github": 1, "guard": 1, "internet": 1, "io": 1, "function": 1, "light": 1, "listen": 1, "locat": 1, "other": 1, "port": 1, "handler": 1, "processor": 1, "remind": 1, "robinhood": 1, "system": 1, "telegram": 1, "do": 1, "tv": 1, "uncondit": 1, "volum": 1, "vpn": 1, "weather": 1, "word": 1, "match": 1, "wikipedia": 1, "auth": 1, "bearer": 1, "class": 1, "databas": 1, "except": 1, "facenet": 1, "config": 1, "mean": 1, "meet": 1, "myq": 1, "retri": 1, "share": 1, "resourc": 1, "support": 1, "util": 1, "temperatur": 1, "templat": 1, "connector": 1, "wakeonlan": 1, "indic": 1, "tabl": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}})
\ No newline at end of file
diff --git a/docs_gen/index.rst b/docs_gen/index.rst
index 6d86939e..af10d179 100644
--- a/docs_gen/index.rst
+++ b/docs_gen/index.rst
@@ -527,6 +527,12 @@ Weather
:members:
:undoc-members:
+====
+
+.. automodule:: jarvis.executors.weather_monitor
+ :members:
+ :undoc-members:
+
Word Match
==========
diff --git a/jarvis/__init__.py b/jarvis/__init__.py
index 4f2c3d10..fe09f320 100644
--- a/jarvis/__init__.py
+++ b/jarvis/__init__.py
@@ -1,6 +1,6 @@
import os
-version = "2.3"
+version = "2.4"
install_script = os.path.join(os.path.dirname(__file__), 'lib', 'install.sh')
diff --git a/jarvis/api/routers/investment.py b/jarvis/api/routers/investment.py
index f3682910..6fb00584 100644
--- a/jarvis/api/routers/investment.py
+++ b/jarvis/api/routers/investment.py
@@ -48,7 +48,7 @@ async def authenticate_robinhood():
if not auth_stat.ok:
raise APIResponse(status_code=HTTPStatus.SERVICE_UNAVAILABLE.real, detail=auth_stat.body)
robinhood.token = util.keygen_uuid(length=16)
- rendered = jinja2.Template(templates.email.one_time_passcode).render(ENDPOINT='robinhood',
+ rendered = jinja2.Template(templates.email.one_time_passcode).render(ENDPOINT="'robinhood' endpoint",
TOKEN=robinhood.token,
EMAIL=models.env.recipient)
mail_stat = mail_obj.send_email(recipient=models.env.recipient, sender='Jarvis API',
@@ -101,7 +101,8 @@ async def robinhood_path(request: Request, token: str = None):
if not token:
raise APIResponse(status_code=HTTPStatus.UNAUTHORIZED.real,
detail=HTTPStatus.UNAUTHORIZED.__dict__['phrase'])
- if secrets.compare_digest(token, robinhood.token):
+ # token might be present because its added as headers but robinhood.token will be cleared after one time auth
+ if robinhood.token and secrets.compare_digest(token, robinhood.token):
robinhood.token = None
if not os.path.isfile(models.fileio.robinhood):
raise APIResponse(status_code=HTTPStatus.NOT_FOUND.real, detail='Static file was not found on server.')
diff --git a/jarvis/api/routers/offline.py b/jarvis/api/routers/offline.py
index 013b6de9..021858c5 100644
--- a/jarvis/api/routers/offline.py
+++ b/jarvis/api/routers/offline.py
@@ -4,7 +4,7 @@
import traceback
from http import HTTPStatus
from threading import Thread
-from typing import NoReturn
+from typing import NoReturn, Union
from fastapi import APIRouter, Request
from fastapi.responses import FileResponse
@@ -35,6 +35,36 @@ def kill_power() -> NoReturn:
cursor.connection.commit()
+async def process_ok_response(response: str, input_data: OfflineCommunicatorModal) -> Union[bytes, FileResponse]:
+ """Processes responses for 200 messages. Response is framed as synthesized or native based on input data.
+
+ Args:
+ response: Takes the response as text.
+ input_data: Input data modal.
+
+ Returns:
+ Union[bytes, FileResponse]:
+ FileResponse in case of native audio or bytes in case of speech synthesized response.
+ """
+ if input_data.speech_timeout:
+ logger.info("Storing response as %s", models.fileio.speech_synthesis_wav)
+ if binary := await speech_synthesis.speech_synthesis(input_data=SpeechSynthesisModal(
+ text=response, timeout=input_data.speech_timeout, quality="low" # low quality to speed up response
+ ), raise_for_status=False):
+ return binary
+ else:
+ input_data.native_audio = True # try native voice if SpeechSynthesis fails
+ if input_data.native_audio:
+ if native_audio_wav := tts_stt.text_to_audio(text=response):
+ logger.info("Storing response as %s in native audio.", native_audio_wav)
+ Thread(target=support.remove_file, kwargs={'delay': 2, 'filepath': native_audio_wav}, daemon=True).start()
+ return FileResponse(path=native_audio_wav, media_type='application/octet-stream',
+ filename="synthesized.wav", status_code=HTTPStatus.OK.real)
+ logger.error("Failed to generate audio file in native voice.")
+ # Send response as text if requested so or if all other options fail
+ raise APIResponse(status_code=HTTPStatus.OK.real, detail=response)
+
+
@router.post(path="/offline-communicator", dependencies=OFFLINE_PROTECTOR)
async def offline_communicator_api(request: Request, input_data: OfflineCommunicatorModal):
"""Offline Communicator API endpoint for Jarvis.
@@ -81,8 +111,8 @@ async def offline_communicator_api(request: Request, input_data: OfflineCommunic
if word_match.word_match(phrase=command, match_list=keywords.keywords.kill) and 'override' in command.lower():
logger.info("STOP override has been requested.")
Thread(target=kill_power).start()
- raise APIResponse(status_code=HTTPStatus.OK.real,
- detail=f"Shutting down now {models.env.title}!\n{support.exit_message()}")
+ return await process_ok_response(response=f"Shutting down now {models.env.title}!\n{support.exit_message()}",
+ input_data=input_data)
# Keywords for which the ' and ' split should not happen.
ignore_and = keywords.keywords.send_notification + keywords.keywords.reminder + \
@@ -102,7 +132,7 @@ async def offline_communicator_api(request: Request, input_data: OfflineCommunic
logger.error(traceback.format_exc())
and_response += error.__str__()
logger.info("Response: %s", and_response.strip())
- raise APIResponse(status_code=HTTPStatus.OK.real, detail=and_response.strip())
+ return await process_ok_response(response=and_response, input_data=input_data)
if not word_match.word_match(phrase=command, match_list=compatibles.offline_compatible()):
logger.warning("'%s' is not a part of offline compatible request.", command)
@@ -115,9 +145,9 @@ async def offline_communicator_api(request: Request, input_data: OfflineCommunic
if ' after ' in command.lower() and not word_match.word_match(phrase=command, match_list=ignore_after):
if delay_info := commander.timed_delay(phrase=command):
logger.info("%s will be executed after %s", delay_info[0], support.time_converter(second=delay_info[1]))
- raise APIResponse(status_code=HTTPStatus.OK.real,
- detail=f'I will execute it after {support.time_converter(second=delay_info[1])} '
- f'{models.env.title}!')
+ return await process_ok_response(response='I will execute it after '
+ f'{support.time_converter(second=delay_info[1])} '
+ f'{models.env.title}!', input_data=input_data)
try:
response = offline.offline_communicator(command=command)
except Exception as error:
@@ -130,22 +160,4 @@ async def offline_communicator_api(request: Request, input_data: OfflineCommunic
Thread(target=support.remove_file, kwargs={'delay': 2, 'filepath': response}, daemon=True).start()
return FileResponse(path=response, media_type=f'image/{imghdr.what(file=response)}',
filename=os.path.basename(response), status_code=HTTPStatus.OK.real)
- if input_data.speech_timeout:
- logger.info("Storing response as %s", models.fileio.speech_synthesis_wav)
- if binary := await speech_synthesis.speech_synthesis(input_data=SpeechSynthesisModal(
- text=response, timeout=input_data.speech_timeout, quality="low" # low quality to speed up response
- ), raise_for_status=False):
- return binary
- elif input_data.native_audio:
- if native_audio_wav := tts_stt.text_to_audio(text=response):
- logger.info("Storing response as %s in native audio.", native_audio_wav)
- Thread(target=support.remove_file, kwargs={'delay': 2, 'filepath': native_audio_wav}, daemon=True).start()
- return FileResponse(path=native_audio_wav, media_type='application/octet-stream',
- filename="synthesized.wav", status_code=HTTPStatus.OK.real)
- else:
- raise APIResponse(status_code=HTTPStatus.INTERNAL_SERVER_ERROR.real,
- detail="Failed to generate audio file in native voice. "
- "This feature can be flaky at times as it relies on native wav to kernel specific "
- "wav conversion. Please use `speech_timeout` instead to get an audio response.")
- else:
- raise APIResponse(status_code=HTTPStatus.OK.real, detail=response)
+ return await process_ok_response(response=response, input_data=input_data)
diff --git a/jarvis/api/routers/stock_monitor.py b/jarvis/api/routers/stock_monitor.py
index bc34de27..f0c91238 100644
--- a/jarvis/api/routers/stock_monitor.py
+++ b/jarvis/api/routers/stock_monitor.py
@@ -45,11 +45,12 @@ async def send_otp_stock_monitor(email_address: EmailStr, reset_timeout: int = 3
- 503: If failed to send an email.
"""
mail_obj = gmailconnector.SendEmail(gmail_user=models.env.open_gmail_user, gmail_pass=models.env.open_gmail_pass)
- logger.info("Setting stock monitor token")
+ logger.info("Sending stock monitor token as OTP")
stock_monitor_helper.otp_sent[email_address] = util.keygen_uuid(length=16)
- rendered = jinja2.Template(templates.email.stock_monitor_otp).render(
+ rendered = jinja2.Template(templates.email.one_time_passcode).render(
TIMEOUT=support.pluralize(count=util.format_nos(input_=reset_timeout / 60), word="minute"),
- TOKEN=stock_monitor_helper.otp_sent[email_address], EMAIL=email_address
+ TOKEN=stock_monitor_helper.otp_sent[email_address], EMAIL=email_address,
+ ENDPOINT="https://vigneshrao.com/stock-monitor"
)
mail_stat = mail_obj.send_email(recipient=email_address, sender='Jarvis API',
subject=f"Stock Monitor - {datetime.now().strftime('%c')}",
diff --git a/jarvis/api/routers/surveillance.py b/jarvis/api/routers/surveillance.py
index 6e4e5e2e..41cb8fc4 100644
--- a/jarvis/api/routers/surveillance.py
+++ b/jarvis/api/routers/surveillance.py
@@ -71,7 +71,7 @@ async def authenticate_surveillance(cam: CameraIndexModal):
logger.error(auth_stat.json())
raise APIResponse(status_code=HTTPStatus.SERVICE_UNAVAILABLE.real, detail=auth_stat.body)
surveillance.token = util.keygen_uuid(length=16)
- rendered = jinja2.Template(templates.email.one_time_passcode).render(ENDPOINT='surveillance',
+ rendered = jinja2.Template(templates.email.one_time_passcode).render(ENDPOINT="'surveillance' endpoint",
TOKEN=surveillance.token,
EMAIL=models.env.recipient)
mail_stat = mail_obj.send_email(recipient=models.env.recipient, sender='Jarvis API',
@@ -121,9 +121,10 @@ async def monitor(token: str = None):
if not token:
raise APIResponse(status_code=HTTPStatus.UNAUTHORIZED.real,
detail=HTTPStatus.UNAUTHORIZED.__dict__['phrase'])
- if secrets.compare_digest(token, surveillance.token):
+ # token might be present because its added as headers but surveillance.token will be cleared after one time auth
+ if surveillance.token and secrets.compare_digest(token, surveillance.token):
surveillance.client_id = int(''.join(str(time.time()).split('.'))) # include milliseconds to avoid dupes
- rendered = jinja2.Template(templates.origin.surveillance).render(CLIENT_ID=surveillance.client_id)
+ rendered = jinja2.Template(templates.endpoint.surveillance).render(CLIENT_ID=surveillance.client_id)
content_type, _ = mimetypes.guess_type(rendered)
return HTMLResponse(status_code=HTTPStatus.TEMPORARY_REDIRECT.real,
content=rendered, media_type=content_type)
diff --git a/jarvis/api/triggers/stock_report.py b/jarvis/api/triggers/stock_report.py
index cc66fb7f..ad18d210 100644
--- a/jarvis/api/triggers/stock_report.py
+++ b/jarvis/api/triggers/stock_report.py
@@ -201,8 +201,9 @@ def gatherer(self) -> NoReturn:
s2 = s2.replace('\n', '\n\t\t\t')
s1 = s1.replace('\n', '\n\t\t\t')
- rendered = jinja2.Template(templates.origin.robinhood).render(TITLE=title, SUMMARY=web_text, PROFIT=profit_web,
- LOSS=loss_web, WATCHLIST_UP=s2, WATCHLIST_DOWN=s1)
+ rendered = jinja2.Template(templates.endpoint.robinhood).render(TITLE=title, SUMMARY=web_text,
+ PROFIT=profit_web, LOSS=loss_web,
+ WATCHLIST_UP=s2, WATCHLIST_DOWN=s1)
with open(models.fileio.robinhood, 'w') as static_file:
static_file.write(rendered)
self.logger.info("Static file '%s' has been generated.", models.fileio.robinhood)
diff --git a/jarvis/executors/communicator.py b/jarvis/executors/communicator.py
index 8bad2e42..18169b69 100644
--- a/jarvis/executors/communicator.py
+++ b/jarvis/executors/communicator.py
@@ -1,4 +1,3 @@
-import string
from typing import Union
import gmailconnector
@@ -98,7 +97,6 @@ def send_email(body: str, recipient: Union[EmailStr, str], subject: str = None,
- Boolean flag to indicate the email was sent successfully.
- Error response from gmail-connector.
"""
- body = string.capwords(body)
if not subject:
subject = "Message from Jarvis" if recipient == models.env.recipient else f"Message from {models.env.name}"
rendered = jinja2.Template(source=templates.email.notification).render(SENDER=title or models.env.name,
diff --git a/jarvis/executors/offline.py b/jarvis/executors/offline.py
index 63f0d37a..a24a066e 100644
--- a/jarvis/executors/offline.py
+++ b/jarvis/executors/offline.py
@@ -13,7 +13,7 @@
from jarvis._preexec import keywords_handler # noqa
from jarvis.executors import (alarm, automation, background_task, conditions,
crontab, listener_controls, others, remind,
- word_match)
+ weather_monitor, word_match)
from jarvis.modules.auth_bearer import BearerAuth
from jarvis.modules.conditions import keywords
from jarvis.modules.crontab import expression
@@ -41,12 +41,14 @@ def background_tasks() -> NoReturn:
start_events = start_meetings = start_cron = time.time()
task_dict = {i: time.time() for i in range(len(tasks))} # Creates a start time for each task
dry_run = True
+ w_alert = {'time': ''}
while True:
+ now = datetime.now()
# Trigger background tasks
for i, task in enumerate(tasks):
if task_dict[i] + task.seconds <= time.time() or dry_run: # Checks a particular tasks' elapsed time
task_dict[i] = time.time() # Updates that particular tasks' start time
- if datetime.now().hour in task.ignore_hours:
+ if now.hour in task.ignore_hours:
logger.debug("'%s' skipped honoring ignore hours", task)
else:
logger.debug("Executing %s", task.task)
@@ -75,13 +77,20 @@ def background_tasks() -> NoReturn:
# Trigger automation
if os.path.isfile(models.fileio.automation):
if exec_task := automation.auto_helper(offline_list=offline_list):
- logger.debug("Executing %s", exec_task)
- try:
- response = offline_communicator(command=exec_task) or "No response for automated task"
- logger.info("Response %s", response)
- except Exception as error:
- logger.error(error)
- logger.error(traceback.format_exc())
+ # Check and trigger monitor only if it wasn't run previously, avoid duplicate check within a minute
+ if "weather" in exec_task.lower() and w_alert['time'] != now.strftime('%H:%M'):
+ # run as daemon and not store in children table as this won't take long
+ logger.info("Initiating weather alert monitor")
+ Process(target=weather_monitor.monitor, daemon=True).start()
+ w_alert['time'] = now.strftime('%H:%M')
+ else:
+ logger.debug("Executing %s", exec_task)
+ try:
+ response = offline_communicator(command=exec_task) or "No response for automated task"
+ logger.info("Response %s", response)
+ except Exception as error:
+ logger.error(error)
+ logger.error(traceback.format_exc())
# Sync events from the event app specified (calendar/outlook)
if start_events + models.env.sync_events <= time.time() or dry_run:
@@ -125,7 +134,7 @@ def background_tasks() -> NoReturn:
for meeting_name, timing_info in each_muter.items():
meeting_time = timing_info[0]
duration = timing_info[1]
- if meeting_time == datetime.now().strftime("%I:%M %p"):
+ if meeting_time == now.strftime("%I:%M %p"):
logger.info("Disabling listener for the meeting '%s'. Will be enabled after %s",
meeting_name, support.time_converter(second=duration))
meeting_muter.remove(each_muter) # Remove event from new list to avoid repetition
@@ -136,17 +145,17 @@ def background_tasks() -> NoReturn:
# Trigger alarms
if alarm_state := support.lock_files(alarm_files=True):
for each_alarm in alarm_state:
- if each_alarm == datetime.now().strftime("%I_%M_%p.lock") or \
- each_alarm == datetime.now().strftime("%I_%M_%p_repeat.lock") or \
- each_alarm == datetime.now().strftime("%A_%I_%M_%p_repeat.lock"):
+ if each_alarm == now.strftime("%I_%M_%p.lock") or \
+ each_alarm == now.strftime("%I_%M_%p_repeat.lock") or \
+ each_alarm == now.strftime("%A_%I_%M_%p_repeat.lock"):
Process(target=alarm.executor).start()
if each_alarm.endswith("_repeat.lock"):
os.rename(os.path.join("alarm", each_alarm), os.path.join("alarm", f"_{each_alarm}"))
else:
os.remove(os.path.join("alarm", each_alarm))
elif each_alarm.startswith('_') and not \
- (each_alarm == datetime.now().strftime("_%I_%M_%p_repeat.lock") or
- each_alarm == datetime.now().strftime("_%A_%I_%M_%p_repeat.lock")):
+ (each_alarm == now.strftime("_%I_%M_%p_repeat.lock") or
+ each_alarm == now.strftime("_%A_%I_%M_%p_repeat.lock")):
os.rename(os.path.join("alarm", each_alarm), os.path.join("alarm", each_alarm.lstrip("_")))
# Trigger reminders
@@ -163,11 +172,20 @@ def background_tasks() -> NoReturn:
else:
remind_msg = remind_msg.replace('.lock', '')
remind_msg = remind_msg.replace('_', ' ')
- if remind_time == datetime.now().strftime("%I_%M_%p"):
+ if remind_time == now.strftime("%I_%M_%p"):
logger.info("Executing reminder: %s", each_reminder)
Thread(target=remind.executor, kwargs={'message': remind_msg, 'contact': name}).start()
os.remove(os.path.join("reminder", reminder_file))
+ # Trigger weather alert system
+ # If a weather alert time is given and the current time matches with the given time proceed
+ if models.env.weather_alert and now.strftime('%H:%M') == models.env.weather_alert.strftime('%H:%M'):
+ # Check and trigger monitor only if it wasn't run previously, avoid duplicate check within a minute
+ if w_alert['time'] != now.strftime('%H:%M'):
+ logger.info("Initiating weather alert monitor")
+ Process(target=weather_monitor.monitor, daemon=True).start()
+ w_alert['time'] = now.strftime('%H:%M')
+
# Rewrite keywords
keywords_handler.rewrite_keywords()
diff --git a/jarvis/executors/processor.py b/jarvis/executors/processor.py
index 68218499..ce50f260 100644
--- a/jarvis/executors/processor.py
+++ b/jarvis/executors/processor.py
@@ -32,9 +32,7 @@ def delete_db() -> NoReturn:
logger.info("Removing %s", models.fileio.base_db)
os.remove(models.fileio.base_db)
if os.path.isfile(models.fileio.base_db):
- raise FileExistsError(
- f"{models.fileio.base_db} still exists!"
- )
+ raise FileExistsError(f"{models.fileio.base_db} still exists!")
return
@@ -109,7 +107,7 @@ def start_processes(func_name: str = None) -> Union[Process, Dict[str, Process]]
Returns a process object if a function name is passed, otherwise a mapping of function name and process objects.
See Also:
- - speech_synthesizer: Initiates larynx docker image for speech synthesis.
+ - speech_synthesizer: Initiates docker container for speech synthesis.
- telegram_api: Initiates message polling for Telegram bot to execute offline commands.
- fast_api: Initiates uvicorn server to process offline commands, stock monitor and robinhood report generation.
- background_tasks: Initiates internal background tasks, cron jobs, alarms, reminders, events and meetings sync.
diff --git a/jarvis/executors/volume.py b/jarvis/executors/volume.py
index f1236879..dbaeed47 100644
--- a/jarvis/executors/volume.py
+++ b/jarvis/executors/volume.py
@@ -26,8 +26,11 @@ def speaker_volume(level: int) -> NoReturn:
Args:
level: Takes the volume level as an argument.
"""
- logger.info("Jarvis' volume has been set to %d" % level + "%")
- models.audio_driver.setProperty('volume', level / 100)
+ if models.audio_driver:
+ logger.info("Jarvis' volume has been set to %d" % level + "%")
+ models.audio_driver.setProperty('volume', level / 100)
+ else:
+ logger.warning("Setting Jarvis' volume is not available for speech-synthesis")
def volume(phrase: str = None, level: int = None) -> NoReturn:
diff --git a/jarvis/executors/weather.py b/jarvis/executors/weather.py
index f09ce6e6..94b22c90 100644
--- a/jarvis/executors/weather.py
+++ b/jarvis/executors/weather.py
@@ -2,6 +2,7 @@
import urllib.error
import urllib.request
from datetime import datetime
+from typing import Any, Optional, Tuple, Union
import inflect
@@ -13,13 +14,14 @@
from jarvis.modules.utils import shared, support
-def weather(phrase: str = None) -> None:
+def weather(phrase: str = None, monitor: bool = False) -> Union[Tuple[Any, int, int, int, Optional[str]], None]:
"""Says weather at any location if a specific location is mentioned.
Says weather at current location by getting IP using reverse geocoding if no place is received.
Args:
phrase: Takes the phrase spoken as an argument.
+ monitor: Takes a boolean value to simply return the weather response.
"""
if not models.env.weather_api:
logger.warning("Weather apikey not found.")
@@ -147,6 +149,15 @@ def weather(phrase: str = None) -> None:
temp_feel_f = int(temperature.k2f(arg=response['current']['feels_like']))
sunrise = datetime.fromtimestamp(response['daily'][0]['sunrise']).strftime("%I:%M %p")
sunset = datetime.fromtimestamp(response['daily'][0]['sunset']).strftime("%I:%M %p")
+ if monitor:
+ if 'alerts' in response:
+ alerts = response['alerts'][0]['event']
+ start_alert = datetime.fromtimestamp(response['alerts'][0]['start']).strftime("%I:%M %p")
+ end_alert = datetime.fromtimestamp(response['alerts'][0]['end']).strftime("%I:%M %p")
+ alert = f'You have a weather alert for {alerts} between {start_alert} and {end_alert}'
+ else:
+ alert = None
+ return condition, high, low, temp_f, alert
if phrase:
if 'sunrise' in phrase or 'sun rise' in phrase or ('sun' in phrase and 'rise' in phrase):
if datetime.strptime(datetime.today().strftime("%I:%M %p"), "%I:%M %p") >= \
@@ -201,8 +212,5 @@ def weather(phrase: str = None) -> None:
alerts = response['alerts'][0]['event']
start_alert = datetime.fromtimestamp(response['alerts'][0]['start']).strftime("%I:%M %p")
end_alert = datetime.fromtimestamp(response['alerts'][0]['end']).strftime("%I:%M %p")
- else:
- alerts, start_alert, end_alert = None, None, None
- if alerts and start_alert and end_alert:
output += f' You have a weather alert for {alerts} between {start_alert} and {end_alert}'
speaker.speak(text=output)
diff --git a/jarvis/executors/weather_monitor.py b/jarvis/executors/weather_monitor.py
new file mode 100644
index 00000000..d04bd99c
--- /dev/null
+++ b/jarvis/executors/weather_monitor.py
@@ -0,0 +1,49 @@
+import string
+from datetime import datetime
+
+from jarvis.executors import communicator, weather
+from jarvis.modules.logger.custom_logger import logger
+from jarvis.modules.models import models
+
+
+def monitor() -> None:
+ """Weather monitoring system to trigger notifications for high, low weather and severe weather alert."""
+ condition, high, low, temp_f, alert = weather.weather(monitor=True)
+ if not any((high >= 100, low <= 36, alert)):
+ logger.info(dict(condition=condition, high=high, low=low, temperature=temp_f, alert=alert))
+ logger.info("No alerts to report")
+ return
+ subject = f"Weather Alert {datetime.now().strftime('%c')}"
+ sender = "Jarvis Weather Alert System"
+ body = f"Highest Temperature: {high}\N{DEGREE SIGN}F\n" \
+ f"Lowest Temperature: {low}\N{DEGREE SIGN}F\n" \
+ f"Current Temperature: {temp_f}\N{DEGREE SIGN}F\n" \
+ f"Current Condition: {string.capwords(condition)}"
+ email_args = dict(body=body, recipient=models.env.recipient, subject=subject, sender=sender,
+ gmail_user=models.env.open_gmail_user, gmail_pass=models.env.open_gmail_pass)
+ phone_args = dict(user=models.env.open_gmail_user, password=models.env.open_gmail_pass,
+ body=body, number=models.env.phone_number, subject=subject)
+ if high >= 100:
+ email_args['title'] = "High weather alert!"
+ email_args['body'] = email_args['body'].replace('\n', '
')
+ logger.info("%s: %s", email_args['title'], email_args['body'])
+ communicator.send_email(**email_args)
+ phone_args['body'] = "High weather alert!\n" + phone_args['body']
+ communicator.send_sms(**phone_args)
+ return
+ if low <= 36:
+ email_args['title'] = "Low weather alert!"
+ email_args['body'] = email_args['body'].replace('\n', '
')
+ logger.info("%s: %s", email_args['title'], email_args['body'])
+ communicator.send_email(**email_args)
+ phone_args['body'] = "Low weather alert!\n" + phone_args['body']
+ communicator.send_sms(**phone_args)
+ return
+ if alert:
+ email_args['title'] = "Critical weather alert!"
+ email_args['body'] = email_args['body'].replace('\n', '
')
+ logger.info("%s: %s", email_args['title'], email_args['body'])
+ communicator.send_email(**email_args)
+ phone_args['body'] = "Critical weather alert!\n" + phone_args['body']
+ communicator.send_sms(**phone_args)
+ return
diff --git a/jarvis/modules/audio/speaker.py b/jarvis/modules/audio/speaker.py
index b65fd24f..52a9edc2 100644
--- a/jarvis/modules/audio/speaker.py
+++ b/jarvis/modules/audio/speaker.py
@@ -11,6 +11,7 @@
from threading import Thread
from typing import NoReturn, Union
+import pynotification
import requests
from playsound import playsound
@@ -18,11 +19,15 @@
from jarvis.modules.exceptions import EgressErrors
from jarvis.modules.logger.custom_logger import logger
from jarvis.modules.models import models
-from jarvis.modules.utils import shared, util
+from jarvis.modules.utils import shared, support, util
+
+SS_HEADERS = {
+ "Content-Type": "text/plain"
+}
def speech_synthesizer(text: str,
- timeout: Union[int, float] = models.env.speech_synthesis_timeout,
+ timeout: Union[int, float] = None,
quality: str = models.env.speech_synthesis_quality,
voice: str = models.env.speech_synthesis_voice) -> bool:
"""Makes a post call to docker container for speech synthesis.
@@ -53,8 +58,8 @@ def speech_synthesizer(text: str,
try:
response = requests.post(
url=f"http://{models.env.speech_synthesis_host}:{models.env.speech_synthesis_port}/api/tts",
- headers={"Content-Type": "text/plain"}, params={"voice": voice, "vocoder": quality}, data=text,
- verify=False, timeout=timeout
+ headers=SS_HEADERS, params={"voice": voice, "vocoder": quality}, data=text, verify=False,
+ timeout=timeout or models.env.speech_synthesis_timeout # set timeout here as speak() sets it on demand
)
if response.ok:
with open(file=models.fileio.speech_synthesis_wav, mode="wb") as file:
@@ -69,7 +74,7 @@ def speech_synthesizer(text: str,
except EgressErrors as error:
logger.error(error)
logger.info("Disabling speech synthesis")
- # Purposely exclude timeout since, larynx takes more time during first iteration to download the required voice
+ # Purposely exclude timeout since, speech-synthesis takes more time initially to download the required voice
if not any((isinstance(error, TimeoutError), isinstance(error, requests.Timeout))):
models.env.speech_synthesis_timeout = 0
@@ -80,8 +85,10 @@ def speak(text: str = None, run: bool = False, block: bool = True) -> NoReturn:
Args:
text: Takes the text that has to be spoken as an argument.
run: Takes a boolean flag to choose whether to run the ``audio_driver.say`` loop.
- block: Takes a boolean flag to wait other tasks while speaking. [Applies only for larynx running on docker]
+ block: Takes a boolean flag to await other tasks while speaking. [Applies only for speech-synthesis on docker]
"""
+ if not models.audio_driver:
+ models.env.speech_synthesis_timeout = 10
caller = sys._getframe(1).f_code.co_name # noqa: PyProtectedMember,PyUnresolvedReferences
if caller != 'conditions': # function where all the magic happens
Thread(target=frequently_used, kwargs={"function_name": caller}).start()
@@ -98,9 +105,14 @@ def speak(text: str = None, run: bool = False, block: bool = True) -> NoReturn:
os.path.isfile(models.fileio.speech_synthesis_wav):
playsound(sound=models.fileio.speech_synthesis_wav, block=block)
os.remove(models.fileio.speech_synthesis_wav)
- else:
+ elif models.audio_driver:
models.audio_driver.say(text=text)
- if run and not shared.called_by_offline:
+ else:
+ support.flush_screen()
+ pynotification.pynotifier(message="speech-synthesis became unavailable when audio driver was faulty\n"
+ "resolving to on-screen response", title="AUDIO ERROR", dialog=True)
+ print(text)
+ if run and models.audio_driver and not shared.called_by_offline:
logger.debug("Speaker called by: '%s'", caller)
models.audio_driver.runAndWait()
diff --git a/jarvis/modules/crontab/expression.py b/jarvis/modules/crontab/expression.py
index 8b328270..04e4f435 100644
--- a/jarvis/modules/crontab/expression.py
+++ b/jarvis/modules/crontab/expression.py
@@ -63,9 +63,7 @@ def __init__(self, line: str, epoch: tuple = DEFAULT_EPOCH, epoch_utc_offset: in
fields.append('')
if len(fields) < 6:
- raise InvalidArgument(
- f"{line!r} has invalid cron expression!"
- )
+ raise InvalidArgument(f"{line!r} has invalid cron expression!")
minutes, hours, dom, months, dow, self.comment = fields
self.expression = ' '.join(fields[:5])
@@ -83,9 +81,7 @@ def __init__(self, line: str, epoch: tuple = DEFAULT_EPOCH, epoch_utc_offset: in
try:
self.compute_numtab()
except TypeError:
- raise InvalidArgument(
- f"{line!r} has invalid cron expression!"
- )
+ raise InvalidArgument(f"{line!r} has invalid cron expression!")
if len(epoch) == 5:
y, mo, d, h, m = epoch
self.epoch = (y, mo, d, h, m, epoch_utc_offset)
@@ -119,9 +115,7 @@ def compute_numtab(self):
for field_str, span in zip(self.string_tab, self.FIELD_RANGES):
split_field_str = field_str.split(',')
if len(split_field_str) > 1 and "*" in split_field_str:
- raise InvalidArgument(
- "\"*\" must be alone in a field."
- )
+ raise InvalidArgument("\"*\" must be alone in a field.")
unified = set()
for cron_atom in split_field_str:
@@ -280,9 +274,7 @@ def parse_atom(parse: str, minmax: tuple) -> set:
if minmax[0] <= value <= minmax[1]:
return {value}
else:
- raise InvalidArgument(
- f"Invalid bounds: {parse}"
- )
+ raise InvalidArgument(f"invalid bounds: {parse}")
elif '-' in parse or '/' in parse:
divide = parse.split('/')
subrange = divide[0]
@@ -294,16 +286,12 @@ def parse_atom(parse: str, minmax: tuple) -> set:
# Example: a-b
prefix, suffix = [int(n) for n in subrange.split('-')]
if prefix < minmax[0] or suffix > minmax[1]:
- raise InvalidArgument(
- f"Invalid bounds: {parse}"
- )
+ raise InvalidArgument(f"invalid bounds: {parse}")
elif subrange == '*':
# Include all values with the given range
prefix, suffix = minmax
else:
- raise InvalidArgument(
- f"Unrecognized symbol: {subrange}"
- )
+ raise InvalidArgument(f"unrecognized symbol: {subrange}")
if prefix < suffix:
# Example: 7-10
diff --git a/jarvis/modules/exceptions.py b/jarvis/modules/exceptions.py
index 9e55b581..6e5274a5 100644
--- a/jarvis/modules/exceptions.py
+++ b/jarvis/modules/exceptions.py
@@ -158,3 +158,11 @@ def __init__(self, device: str, msg: str):
def __str__(self) -> str:
"""Returns a printable representational of the error message."""
return repr(self.msg)
+
+
+class SegmentationError(EnvironmentError):
+ """Custom ``SegmentationError`` raised when the code exits with SIGSEGV.
+
+ >>> SegmentationError
+
+ """
diff --git a/jarvis/modules/lights/smart_lights.py b/jarvis/modules/lights/smart_lights.py
index 9ab2db79..58019a54 100644
--- a/jarvis/modules/lights/smart_lights.py
+++ b/jarvis/modules/lights/smart_lights.py
@@ -89,9 +89,7 @@ def __init__(self, device_ip: str, device_type: int, operation: str):
self.sock.close()
error_msg = f"\rSocket error on {device_ip}: {error}"
logger.error("%s while performing '%s'", error_msg, self.operation)
- raise socket.error(
- error
- )
+ raise socket.error(error)
def turn_on(self) -> NoReturn:
"""Turn a device on."""
diff --git a/jarvis/modules/models/classes.py b/jarvis/modules/models/classes.py
index 4a57931e..f661836d 100644
--- a/jarvis/modules/models/classes.py
+++ b/jarvis/modules/models/classes.py
@@ -6,15 +6,19 @@
"""
import getpass
+import importlib
import os
import pathlib
import platform
import socket
+import subprocess
import sys
from collections import ChainMap
from datetime import datetime
from enum import Enum
-from typing import List, Optional, Union
+from multiprocessing import current_process
+from threading import Thread
+from typing import Dict, List, NoReturn, Optional, Union
import psutil
import pyttsx3
@@ -24,10 +28,11 @@
validator)
from jarvis import indicators, scripts
-from jarvis.modules.exceptions import InvalidEnvVars, UnsupportedOS
+from jarvis.modules.exceptions import (InvalidEnvVars, SegmentationError,
+ UnsupportedOS)
from jarvis.modules.peripherals import channel_type, get_audio_devices
-audio_driver = pyttsx3.init()
+module: Dict[str, pyttsx3.Engine] = {}
if not os.environ.get('AWS_DEFAULT_REGION'):
os.environ['AWS_DEFAULT_REGION'] = 'us-west-2' # Required when vpn-server is imported
@@ -82,6 +87,58 @@ class Settings(BaseSettings):
settings.os = "Windows"
+def import_module() -> NoReturn:
+ """Instantiates pyttsx3 after importing ``nsss`` drivers beforehand."""
+ if settings.os == "Darwin":
+ importlib.import_module("pyttsx3.drivers.nsss")
+ module['pyttsx3'] = pyttsx3.init()
+
+
+def dynamic_rate() -> int:
+ """Speech rate based on the Operating System."""
+ if settings.os == "Linux":
+ return 1
+ return 200
+
+
+def test_and_load_audio_driver() -> pyttsx3.Engine:
+ """Get audio driver by instantiating pyttsx3.
+
+ Returns:
+ pyttsx3.Engine:
+ Audio driver.
+ """
+ try:
+ subprocess.run(["python3", "-c", "import pyttsx3; pyttsx3.init()"], check=True)
+ except subprocess.CalledProcessError as error:
+ if error.returncode == -11: # Segmentation fault error code
+ if current_process().name == "MainProcess":
+ print(f"\033[91mERROR:{'':<6}Segmentation fault when loading audio driver "
+ "(interrupted by signal 11: SIGSEGV)\033[0m")
+ print(f"\033[93mWARNING:{'':<4}Trying alternate solution...\033[0m")
+ thread = Thread(target=import_module)
+ thread.start()
+ thread.join(timeout=10)
+ if module.get('pyttsx3'):
+ if current_process().name == "MainProcess":
+ print(f"\033[92mINFO:{'':<7}Instantiated audio driver successfully\033[0m")
+ return module['pyttsx3']
+ else:
+ raise SegmentationError(
+ "Segmentation fault when loading audio driver (interrupted by signal 11: SIGSEGV)"
+ )
+ else:
+ return pyttsx3.init()
+ else:
+ return pyttsx3.init()
+
+
+try:
+ audio_driver = test_and_load_audio_driver()
+except (SegmentationError, Exception): # resolve to speech-synthesis
+ audio_driver = None
+
+
class Sensitivity(float or PositiveInt, Enum):
"""Allowed values for sensitivity.
@@ -201,7 +258,8 @@ class EnvConfig(BaseSettings):
# Built-in speaker config
voice_name: str = Field(default=None, env='VOICE_NAME')
- voice_rate: Union[PositiveInt, PositiveFloat] = Field(default=audio_driver.getProperty("rate"), env='VOICE_RATE')
+ _rate = audio_driver.getProperty("rate") if audio_driver else dynamic_rate()
+ voice_rate: Union[PositiveInt, PositiveFloat] = Field(default=_rate, env='VOICE_RATE')
# Peripheral config
camera_index: Union[int, PositiveInt] = Field(default=None, ge=0, env='CAMERA_INDEX')
@@ -305,6 +363,7 @@ class EnvConfig(BaseSettings):
# Background tasks
crontab: List[str] = Field(default=[], env='CRONTAB')
+ weather_alert: Union[str, datetime] = Field(default=None, env='WEATHER_ALERT') # get as str and store as datetime
# WiFi config
wifi_ssid: str = Field(default=None, env='WIFI_SSID')
@@ -360,7 +419,19 @@ def parse_birthday(cls, value: str) -> Union[str, None]:
if datetime.strptime(value, "%d-%B"):
return value
except ValueError:
- raise InvalidEnvVars('format should be DD-MM')
+ raise InvalidEnvVars("format should be 'DD-MM'")
+
+ # noinspection PyMethodParameters
+ @validator("weather_alert", pre=True, allow_reuse=True)
+ def parse_weather_alert(cls, value: str) -> Union[str, None, datetime]:
+ """Validates date value to be in DD-MM format."""
+ if not value:
+ return
+ try:
+ if val := datetime.strptime(value, '%H:%M'):
+ return val
+ except ValueError:
+ raise InvalidEnvVars("format should be 'HH:MM'")
env = EnvConfig()
diff --git a/jarvis/modules/models/models.py b/jarvis/modules/models/models.py
index c04e7558..81f2d8f0 100644
--- a/jarvis/modules/models/models.py
+++ b/jarvis/modules/models/models.py
@@ -20,14 +20,15 @@
from jarvis.modules.crontab.expression import CronExpression
from jarvis.modules.database import database
from jarvis.modules.exceptions import (CameraError, EgressErrors,
- InvalidEnvVars, MissingEnvVars)
+ InvalidEnvVars, MissingEnvVars,
+ SegmentationError)
from jarvis.modules.models.classes import (Indicators, RecognizerSettings,
audio_driver, env, fileio, settings,
supported_platforms)
from jarvis.modules.utils import util
# Shared across other modules
-voices: Union[list, object] = audio_driver.getProperty("voices")
+voices: Union[list, object] = audio_driver.getProperty("voices") if audio_driver else []
indicators = Indicators()
# TABLES to be created in `fileio.base_db`
TABLES = {
@@ -74,10 +75,8 @@ def _main_process_validations() -> NoReturn:
for keyword in env.wake_words:
if not pvporcupine.KEYWORD_PATHS.get(keyword) or not os.path.isfile(pvporcupine.KEYWORD_PATHS[keyword]):
- raise InvalidEnvVars(
- f"Detecting {keyword!r} is unsupported!\n"
- f"Available keywords are: {', '.join(list(pvporcupine.KEYWORD_PATHS.keys()))}"
- )
+ raise InvalidEnvVars(f"Detecting {keyword!r} is unsupported!\n"
+ f"Available keywords are: {', '.join(list(pvporcupine.KEYWORD_PATHS.keys()))}")
# If sensitivity is an integer or float, converts it to a list
if isinstance(env.sensitivity, float) or isinstance(env.sensitivity, PositiveInt):
@@ -100,19 +99,18 @@ def _global_validations() -> NoReturn:
"ROOT_PASSWORD due to terminal automations."
)
- voice_names = [__voice.name for __voice in voices]
- if not env.voice_name:
- _set_default_voice_name()
- elif env.voice_name not in voice_names:
- if main:
- raise InvalidEnvVars(
- f"{env.voice_name!r} is not available.\nAvailable voices are: {', '.join(voice_names)}"
- )
- else:
+ if voice_names := [__voice.name for __voice in voices]:
+ if not env.voice_name:
_set_default_voice_name()
- warnings.warn(
- f"{env.voice_name!r} is not available. Defaulting to {env.voice_name!r}"
- )
+ elif env.voice_name not in voice_names:
+ if main:
+ raise InvalidEnvVars(f"{env.voice_name!r} is not available.\n"
+ f"Available voices are: {', '.join(voice_names)}")
+ else:
+ _set_default_voice_name()
+ warnings.warn(
+ f"{env.voice_name!r} is not available. Defaulting to {env.voice_name!r}"
+ )
if env.website and env.website.startswith("http"):
env.website = env.website.lstrip(f"{env.website.scheme}://")
@@ -125,9 +123,7 @@ def _global_validations() -> NoReturn:
# However it will NOT work in this use case, since the type hint is HttpUrl
if env.ics_url and not env.ics_url.endswith('.ics'):
if main:
- raise InvalidEnvVars(
- "'ICS_URL' should end with .ics"
- )
+ raise InvalidEnvVars("'ICS_URL' should end with .ics")
else:
env.ics_url = None
warnings.warn(
@@ -155,7 +151,10 @@ def _global_validations() -> NoReturn:
settings.limited = True
if env.limited is False: # If env var is set as False to brute force full version on a device with < 4 processors
settings.limited = False
-
+ if settings.limited is True and env.weather_alert:
+ warnings.warn(
+ "weather alert cannot function on limited mode"
+ )
# Validates crontab expression if provided
for expression in env.crontab:
CronExpression(expression)
@@ -201,7 +200,7 @@ def _global_validations() -> NoReturn:
# Validate voice for speech synthesis
try:
response = requests.get(url=f"http://{env.speech_synthesis_host}:{env.speech_synthesis_port}/api/voices",
- timeout=(1, 1)) # Set connect and read timeout to bare minimum
+ timeout=(3, 3)) # Set connect and read timeout explicitly
if response.ok:
available_voices = [value.get('id').replace('/', '_') for key, value in response.json().items()]
if env.speech_synthesis_voice not in available_voices:
@@ -216,7 +215,16 @@ def _global_validations() -> NoReturn:
f"Available Voices for Speech Synthesis: {', '.join(available_voices).replace('/', '_')}"
)
except EgressErrors:
- pass
+ if not audio_driver:
+ raise SegmentationError(
+ f"\n\n{settings.bot} needs either an audio driver OR speech-synthesis to run in Docker container\n"
+ f"normally {settings.bot} will try to launch the Docker container to run speech-synthesis.\n"
+ "However if audio driver is unavailable, the docker container should be launched manually or "
+ "the audio driver should be fixed.\n"
+ "Refer:\n"
+ " https://github.com/thevickypedia/Jarvis/wiki#os-agnostic-voice-model\n"
+ " https://stackoverflow.com/a/76050539/13691532"
+ )
_global_validations()
diff --git a/jarvis/modules/telegram/audio_handler.py b/jarvis/modules/telegram/audio_handler.py
index b69de6ad..0f6805a9 100644
--- a/jarvis/modules/telegram/audio_handler.py
+++ b/jarvis/modules/telegram/audio_handler.py
@@ -61,8 +61,6 @@ def audio_converter_win(input_filename: Union[FilePath, str], output_audio_forma
os.remove(input_filename)
if os.path.isfile(output_filename):
return output_filename
- raise FileNotFoundError(
- f"{output_filename} was not found after exporting audio to {output_audio_format}"
- )
+ raise FileNotFoundError(f"{output_filename} was not found after exporting audio to {output_audio_format}")
except FileNotFoundError as error: # raised by audio.export when conversion fails
logger.error(error)
diff --git a/jarvis/modules/templates/email.html b/jarvis/modules/templates/email.html
index ac8c5658..8b66345b 100644
--- a/jarvis/modules/templates/email.html
+++ b/jarvis/modules/templates/email.html
@@ -187,7 +187,7 @@
diff --git a/jarvis/modules/templates/email_OTP.html b/jarvis/modules/templates/email_OTP.html
index 365c0caf..c26e384e 100644
--- a/jarvis/modules/templates/email_OTP.html
+++ b/jarvis/modules/templates/email_OTP.html
@@ -15,7 +15,8 @@
-
A recent login to {{ ENDPOINT }} endpoint was flagged by Jarvis API. If this was you, please use this code to access the {{ ENDPOINT }} endpoint:
+
A recent request on {{ ENDPOINT }} with your email address was flagged by Jarvis API.
+ Please use this code to complete verification.
If this wasn't you, please use the contact link below to report immediately.
@@ -35,8 +36,8 @@
- This code will expire after 5 minutes.
-
This security feature helps ensure only '{{ EMAIL }}' can access the {{ ENDPOINT }} endpoint.
+ This code will expire after {{ TIMEOUT }}.
+
This security feature helps ensure only '{{ EMAIL }}' can access {{ ENDPOINT }} endpoint.
diff --git a/jarvis/modules/templates/stock_monitor_OTP.html b/jarvis/modules/templates/stock_monitor_OTP.html
deleted file mode 100644
index 6daed5b4..00000000
--- a/jarvis/modules/templates/stock_monitor_OTP.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
A recent request on https://vigneshrao.com/stock-monitor with your email address was flagged by Jarvis.
- Please use this code to complete verification.
If this wasn't you, please use the contact link below to report immediately.
-
-
-
-
-
-
-
-
-
-
- {{ TOKEN }}
-
-
-
-
-
-
-
-
- This code will expire after {{ TIMEOUT }} whether or not used.
-
This security feature helps ensure only '{{ EMAIL }}' can access their data.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jarvis/modules/templates/templates.py b/jarvis/modules/templates/templates.py
index 21554994..7ff2d794 100644
--- a/jarvis/modules/templates/templates.py
+++ b/jarvis/modules/templates/templates.py
@@ -33,9 +33,6 @@ class EmailTemplates:
with open(os.path.join(os.path.dirname(__file__), 'email_OTP.html')) as file:
one_time_passcode = file.read()
- with open(os.path.join(os.path.dirname(__file__), 'stock_monitor_OTP.html')) as file:
- stock_monitor_otp = file.read()
-
with open(os.path.join(os.path.dirname(__file__), 'email.html')) as file:
notification = file.read()
@@ -43,10 +40,10 @@ class EmailTemplates:
car_report = file.read()
-class OriginTemplates:
+class EndpointTemplates:
"""HTML templates used for hosting endpoints.
- >>> OriginTemplates
+ >>> EndpointTemplates
"""
@@ -71,5 +68,5 @@ class GenericTemplates:
email = EmailTemplates
-origin = OriginTemplates
generic = GenericTemplates
+endpoint = EndpointTemplates
diff --git a/jarvis/modules/wakeonlan/wakeonlan.py b/jarvis/modules/wakeonlan/wakeonlan.py
index 4ccd499e..14754398 100644
--- a/jarvis/modules/wakeonlan/wakeonlan.py
+++ b/jarvis/modules/wakeonlan/wakeonlan.py
@@ -39,9 +39,7 @@ def create_packet(cls, macaddress: str) -> bytes:
if len(macaddress) == 17:
macaddress = macaddress.replace(macaddress[2], "")
elif len(macaddress) != 12:
- raise InvalidArgument(
- f"Invalid mac address: {macaddress}"
- )
+ raise InvalidArgument(f"invalid mac address: {macaddress}")
return bytes.fromhex("F" * 12 + macaddress * 16)
def send_packet(self, *mac_addresses: str, ip_address: str = BROADCAST_IP, port: int = DEFAULT_PORT,
diff --git a/release_notes.rst b/release_notes.rst
index e9388c44..2d65bd3a 100644
--- a/release_notes.rst
+++ b/release_notes.rst
@@ -1,6 +1,16 @@
Release Notes
=============
+7.3.0 (04/22/2023)
+------------------
+- Feature improvements and bug fixes on `JarvisAPI`
+- Support audio responses for multiple and timed tasks
+- Exhaust all audio options before returning string
+- Resolve edge case scenario in pyttsx3
+- Enable speech-synthesis if audio driver fails
+- Create weather alert monitor to notify harsh weather
+- Remove redundant template
+
7.2.9 (04/17/2023)
------------------
- Create apikey authentication for stock monitor