diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..93c9b368 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.8" + +services: + web: + build: + context: . + dockerfile: ./docker/dockerfile + command: uvicorn server.core.processor:app --reload --host 0.0.0.0 + volumes: + - .:/app + ports: + - 8008:8000 + + mongodb_container: + image: mongo:latest + environment: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: rootpassword + ports: + - 27017:27017 + volumes: + - mongodb_data_container:/data/db +volumes: + mongodb_data_container: diff --git a/docker/dockerfile b/docker/dockerfile new file mode 100644 index 00000000..32cc9a99 --- /dev/null +++ b/docker/dockerfile @@ -0,0 +1,21 @@ +# Dockerfile + +# pull the official docker image +FROM python:3.9.4 + +# set work directory +WORKDIR /app + +# set env variables +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +# install dependencies +COPY requirements.txt . +RUN pip install -r requirements.txt +RUN pip install --no-cache-dir numpy scikit-learn +RUN python3 -c "import nltk; nltk.download('punkt'); nltk.download('averaged_perceptron_tagger')" +# copy project +COPY . . + +WORKDIR /app/src/jarvis diff --git a/requirements.txt b/requirements.txt index a9327dd4..5d6a465b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -appdirs==1.4.3 APScheduler==3.6.0 backports.entry-points-selectable==1.1.0 beautifulsoup4==4.7.1 @@ -6,13 +5,8 @@ bs4==0.0.1 certifi==2019.3.9 chardet==3.0.4 Click==7.0 -colorize==1.1.0 -Cython==0.29.24 -distlib==0.3.3 filelock==3.3.0 geojson==2.4.1 -google==2.0.2 -gTTS-token==1.1.3 idna==2.8 inflect==2.1.0 jaraco.itertools==4.4.2 @@ -20,32 +14,26 @@ joblib==0.14.0 lxml==4.6.3 mock==3.0.5 more-itertools==7.0.0 -nltk==3.4.5 -numpy==1.16.4 patch==1.16 platformdirs==2.4.0 playsound==1.2.2 -psutil==5.6.6 PTable==0.9.2 -PyAudio==0.2.11 -pycairo==1.20.1 -PyGObject==3.42.0 pymongo==3.10.1 pyowm==2.10.0 pyttsx3==2.71 pytz==2019.1 requests==2.21.0 scipy==1.5.4 +nltk six==1.12.0 soupsieve==1.9.1 -SpeechRecognition==3.8.1 -speedtest-cli==2.1.1 textblob==0.15.3 tzlocal==1.5.1 urllib3==1.24.3 -virtualenv==20.8.1 web-cache==1.1.0 wikipedia==1.4.0 wolframalpha==3.0.1 word2number==1.1 xmltodict==0.12.0 +fastapi +uvicorn \ No newline at end of file diff --git a/src/jarvis/jarvis/core/__init__.py b/src/jarvis/client/__init__.py similarity index 100% rename from src/jarvis/jarvis/core/__init__.py rename to src/jarvis/client/__init__.py diff --git a/src/jarvis/client/api.py b/src/jarvis/client/api.py new file mode 100644 index 00000000..138cd6df --- /dev/null +++ b/src/jarvis/client/api.py @@ -0,0 +1,14 @@ +from enum import Enum + +class Status_code(Enum): + Success = 200 + Server_Error = 500 + Client_Error = 400 + + +class api_manager: + def __init__(self) -> None: + pass + + def post_user_input(transcript: str) -> Status_code: + pass \ No newline at end of file diff --git a/src/jarvis/jarvis/core/console.py b/src/jarvis/client/console.py similarity index 97% rename from src/jarvis/jarvis/core/console.py rename to src/jarvis/client/console.py index d138af86..725a4dea 100644 --- a/src/jarvis/jarvis/core/console.py +++ b/src/jarvis/client/console.py @@ -25,10 +25,10 @@ import psutil import logging -from jarvis import settings -from jarvis.utils.mongoDB import db -from jarvis.utils.console import jarvis_logo, start_text, OutputStyler, headerize -from jarvis.enumerations import MongoCollections, InputMode +from server import settings +from server.utils.mongoDB import db +from server.utils.console import jarvis_logo, start_text, OutputStyler, headerize +from server.enumerations import MongoCollections, InputMode class ConsoleManager: diff --git a/src/jarvis/jarvis/engines/__init__.py b/src/jarvis/client/engines/__init__.py similarity index 100% rename from src/jarvis/jarvis/engines/__init__.py rename to src/jarvis/client/engines/__init__.py diff --git a/src/jarvis/jarvis/engines/stt.py b/src/jarvis/client/engines/stt.py similarity index 98% rename from src/jarvis/jarvis/engines/stt.py rename to src/jarvis/client/engines/stt.py index 1bb9de88..df6d5f00 100644 --- a/src/jarvis/jarvis/engines/stt.py +++ b/src/jarvis/client/engines/stt.py @@ -23,8 +23,8 @@ import logging import speech_recognition as sr -import jarvis -from jarvis.core.console import ConsoleManager +import server +from server.core.console import ConsoleManager class STTEngine: diff --git a/src/jarvis/jarvis/engines/tts.py b/src/jarvis/client/engines/tts.py similarity index 99% rename from src/jarvis/jarvis/engines/tts.py rename to src/jarvis/client/engines/tts.py index fa0b608d..7204c247 100644 --- a/src/jarvis/jarvis/engines/tts.py +++ b/src/jarvis/client/engines/tts.py @@ -25,7 +25,7 @@ import pyttsx3 import queue -from jarvis.core.console import ConsoleManager +from server.core.console import ConsoleManager class TTS: diff --git a/src/jarvis/jarvis/engines/ttt.py b/src/jarvis/client/engines/ttt.py similarity index 96% rename from src/jarvis/jarvis/engines/ttt.py rename to src/jarvis/client/engines/ttt.py index 1b19de1b..355fe243 100644 --- a/src/jarvis/jarvis/engines/ttt.py +++ b/src/jarvis/client/engines/ttt.py @@ -21,8 +21,8 @@ # SOFTWARE. import logging -from jarvis.core.console import ConsoleManager -from jarvis.utils.console import user_input +from server.core.console import ConsoleManager +from server.utils.console import user_input class TTTEngine: diff --git a/src/jarvis/client/main.py b/src/jarvis/client/main.py new file mode 100644 index 00000000..44a2d5e8 --- /dev/null +++ b/src/jarvis/client/main.py @@ -0,0 +1,19 @@ +import engines +from api import api_manager + +class Client: + def __init__(self, console_manager) -> None: + self.console_manager = console_manager + self.api_manger = api_manager() + + def run() -> None: + """ + Assistant starting point. + + - STEP 1: Get user input based on the input mode (voice or text) + - STEP 2: Send the user input to the api + - STEP 3: Get api response and either execute a local skill or give the user a respone + + """ + transcript = engines.input_engine.recognize_input() + self.api_manger.post_user_input(transcript) diff --git a/src/jarvis/jarvis/core/processor.py b/src/jarvis/jarvis/core/processor.py deleted file mode 100644 index 6d54f13f..00000000 --- a/src/jarvis/jarvis/core/processor.py +++ /dev/null @@ -1,122 +0,0 @@ -# MIT License - -# Copyright (c) 2019 Georgios Papachristou - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -import jarvis - -from sklearn.feature_extraction.text import TfidfVectorizer -from sklearn.metrics.pairwise import cosine_similarity - -from jarvis.skills.analyzer import SkillAnalyzer -from jarvis.skills.registry import skill_objects -from jarvis.core.nlp import ResponseCreator -from jarvis.skills.collection.activation import ActivationSkills -from jarvis.utils.mongoDB import db -from jarvis.skills.collection.wolframalpha import WolframSkills - - -class Processor: - def __init__(self, console_manager, settings_): - self.console_manager = console_manager - self.settings = settings_ - self.response_creator = ResponseCreator() - self.skill_analyzer = SkillAnalyzer( - weight_measure=TfidfVectorizer, - similarity_measure=cosine_similarity, - args=self.settings.SKILL_ANALYZER.get('args'), - sensitivity=self.settings.SKILL_ANALYZER.get('sensitivity'), - ) - - def run(self): - """ - Assistant starting point. - - - STEP 1: Get user input based on the input mode (voice or text) - - STEP 2: Matches the input with a skill - - STEP 3: Create a response - - STEP 4: Execute matched skill - - STEP 5: Insert user transcript and response in history collection (in MongoDB) - - """ - - transcript = jarvis.input_engine.recognize_input() - skill = self.skill_analyzer.extract(transcript) - - if skill: - # ---------------------------------------------------------------------------------------------------------- - # Successfully extracted skill - # ---------------------------------------------------------------------------------------------------------- - - # --------------- - # Positive answer - # --------------- - response = self.response_creator.create_positive_response(transcript) - jarvis.output_engine.assistant_response(response) - - # --------------- - # Skill execution - # --------------- - skill_to_execute = {'voice_transcript': transcript, 'skill': skill} - self._execute_skill(skill_to_execute) - - else: - # ---------------------------------------------------------------------------------------------------------- - # No skill extracted - # ---------------------------------------------------------------------------------------------------------- - - # --------------- - # Negative answer - # --------------- - response = self.response_creator.create_negative_response(transcript) - jarvis.output_engine.assistant_response(response) - - # --------------- - # WolframAlpha API Call - # --------------- - skill_to_execute = {'voice_transcript': transcript, - 'skill': {'name': WolframSkills.call_wolframalpha.__name__} - } - - response = WolframSkills.call_wolframalpha(transcript) - - # -------------------------------------------------------------------------------------------------------------- - # Add new record to history - # -------------------------------------------------------------------------------------------------------------- - - record = {'user_transcript': transcript, - 'response': response if response else '--', - 'executed_skill': skill_to_execute if skill_to_execute else '--' - } - - db.insert_many_documents('history', [record]) - - def _execute_skill(self, skill): - if skill: - skill_func_name = skill.get('skill').get('func') - self.console_manager.console_output(info_log='Executing skill {0}'.format(skill_func_name)) - try: - ActivationSkills.enable_assistant() - skill_func_name = skill.get('skill').get('func') - skill_func = skill_objects[skill_func_name] - skill_func(**skill) - except Exception as e: - self.console_manager.console_output(error_log="Failed to execute skill {0} with message: {1}" - .format(skill_func_name, e)) diff --git a/src/jarvis/jarvis/__init__.py b/src/jarvis/server/__init__.py similarity index 87% rename from src/jarvis/jarvis/__init__.py rename to src/jarvis/server/__init__.py index b77fb60c..5cd22715 100644 --- a/src/jarvis/jarvis/__init__.py +++ b/src/jarvis/server/__init__.py @@ -22,12 +22,10 @@ from logging import config -from jarvis import settings -from jarvis.settings import ROOT_LOG_CONF -from jarvis.utils.mongoDB import db -from jarvis.utils.startup import configure_MongoDB -from jarvis.enumerations import InputMode -import jarvis.engines as engines +import server.settings +from server.settings import ROOT_LOG_CONF +from server.utils.mongoDB import db +from server.utils.startup import configure_MongoDB # ---------------------------------------------------------------------------------------------------------------------- # Create a Console & Rotating file logger @@ -55,5 +53,5 @@ # ---------------------------------------------------------------------------------------------------------------------- # Create assistant input and output engine instances # ---------------------------------------------------------------------------------------------------------------------- -input_engine = engines.STTEngine() if input_mode == InputMode.VOICE.value else engines.TTTEngine() -output_engine = engines.TTSEngine() if response_in_speech else engines.TTTEngine() +#input_engine = engines.STTEngine() if input_mode == InputMode.VOICE.value else engines.TTTEngine() +#output_engine = engines.TTSEngine() if response_in_speech else engines.TTTEngine() diff --git a/src/jarvis/jarvis/_version.py b/src/jarvis/server/_version.py similarity index 100% rename from src/jarvis/jarvis/_version.py rename to src/jarvis/server/_version.py diff --git a/src/jarvis/jarvis/skills/__init__.py b/src/jarvis/server/core/__init__.py similarity index 100% rename from src/jarvis/jarvis/skills/__init__.py rename to src/jarvis/server/core/__init__.py diff --git a/src/jarvis/jarvis/core/nlp.py b/src/jarvis/server/core/nlp.py similarity index 100% rename from src/jarvis/jarvis/core/nlp.py rename to src/jarvis/server/core/nlp.py diff --git a/src/jarvis/server/core/processor.py b/src/jarvis/server/core/processor.py new file mode 100644 index 00000000..36bfd1e4 --- /dev/null +++ b/src/jarvis/server/core/processor.py @@ -0,0 +1,107 @@ +# MIT License + +# Copyright (c) 2019 Georgios Papachristou + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +from typing import Optional +from fastapi import FastAPI +from server.core.nlp import ResponseCreator +from server.settings import SKILL_ANALYZER +from server.skills.registry import BASIC_SKILLS +from server.skills.analyzer import SkillAnalyzer +from sklearn.feature_extraction.text import TfidfVectorizer +from sklearn.metrics.pairwise import cosine_similarity +import json +from bson import ObjectId +from server.utils.mongoDB import db + +from server import settings +class Processor: + def __init__(self): + self.response_creator = ResponseCreator() + self.skill_analyzer = SkillAnalyzer( + weight_measure=TfidfVectorizer, + similarity_measure=cosine_similarity, + args=settings.SKILL_ANALYZER.get('args'), + sensitivity=settings.SKILL_ANALYZER.get('sensitivity'), + ) + self.skill = {} + self.response = {} + def all_skills(self): + return len(BASIC_SKILLS) + def extract_command(self, transcript): + skill = self.skill_analyzer.extract(transcript) + print(skill) + if skill: + return {'voice_transcript': transcript, 'skill': skill, 'response' :self.response_creator.create_positive_response(transcript)} + + else: + return {'voice_transcript': transcript, + 'skill': {'name': WolframSkills.call_wolframalpha.__name__}, + 'response': self.response_creator.create_negative_response(transcript) + } + def _execute_skill(self, skill): + if skill: + skill_func_name = skill.get('skill').get('func') + try: + ActivationSkills.enable_assistant() + skill_func_name = skill.get('skill').get('func') + skill_func = skill_objects[skill_func_name] + skill_func(**skill) + except Exception as e: + return "Failed to execute skill {0} with message: {1}".format(skill_func_name, e) + def query_wolfram(self, query): + WolframSkills.call_wolframalpha(query) + def write_to_db(self,transcript): + record = {'user_transcript': transcript, + 'response': self.response if self.response else '--', + 'executed_skill': self.skill if self.skill else '--' + } + + db.insert_many_documents('history', [record]) + +class JSONEncoder(json.JSONEncoder): + def default(self, o): + if isinstance(o, ObjectId): + return str(o) + return json.JSONEncoder.default(self, o) + +app = FastAPI() +processor = Processor() + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/commands") +def list_skills(): + return {'skills':processor.all_skills()} + +@app.post("/commands") +def extract_skill(transcript: str): + skill = processor.extract_command(transcript) + return JSONEncoder().encode(skill) +@app.get("/execute/{skill_id}") +def extract_skill(skill_id: str): + skill= db.findOne('control_skills', skill_id) + print(skill_id) + response = processor._execute_skill(skill) + return response \ No newline at end of file diff --git a/src/jarvis/jarvis/enumerations.py b/src/jarvis/server/enumerations.py similarity index 100% rename from src/jarvis/jarvis/enumerations.py rename to src/jarvis/server/enumerations.py diff --git a/src/jarvis/jarvis/files/activation_sound.wav b/src/jarvis/server/files/activation_sound.wav similarity index 100% rename from src/jarvis/jarvis/files/activation_sound.wav rename to src/jarvis/server/files/activation_sound.wav diff --git a/src/jarvis/jarvis/files/analog_watch_alarm.wav b/src/jarvis/server/files/analog_watch_alarm.wav similarity index 100% rename from src/jarvis/jarvis/files/analog_watch_alarm.wav rename to src/jarvis/server/files/analog_watch_alarm.wav diff --git a/src/jarvis/jarvis/settings.py b/src/jarvis/server/settings.py similarity index 97% rename from src/jarvis/jarvis/settings.py rename to src/jarvis/server/settings.py index 98f5a0c6..d3f00d94 100644 --- a/src/jarvis/jarvis/settings.py +++ b/src/jarvis/server/settings.py @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from jarvis.enumerations import InputMode +from server.enumerations import InputMode ROOT_LOG_CONF = { 'version': 1, @@ -33,7 +33,7 @@ 'class': 'logging.handlers.RotatingFileHandler', 'level': 'DEBUG', 'formatter': 'detailed', - 'filename': '/var/log/jarvis.log', + 'filename': 'jarvis.log', 'mode': 'a', 'maxBytes': 10000000, 'backupCount': 3, diff --git a/src/jarvis/jarvis/skills/collection/__init__.py b/src/jarvis/server/skills/__init__.py similarity index 100% rename from src/jarvis/jarvis/skills/collection/__init__.py rename to src/jarvis/server/skills/__init__.py diff --git a/src/jarvis/jarvis/skills/analyzer.py b/src/jarvis/server/skills/analyzer.py similarity index 97% rename from src/jarvis/jarvis/skills/analyzer.py rename to src/jarvis/server/skills/analyzer.py index 943330b3..e385824e 100644 --- a/src/jarvis/jarvis/skills/analyzer.py +++ b/src/jarvis/server/skills/analyzer.py @@ -20,8 +20,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. import logging -from jarvis.utils.mapping import math_symbols_mapping -from jarvis.utils.mongoDB import db +from server.utils.mapping import math_symbols_mapping +from server.utils.mongoDB import db class SkillAnalyzer: diff --git a/src/jarvis/jarvis/utils/__init__.py b/src/jarvis/server/skills/collection/__init__.py similarity index 100% rename from src/jarvis/jarvis/utils/__init__.py rename to src/jarvis/server/skills/collection/__init__.py diff --git a/src/jarvis/jarvis/skills/collection/activation.py b/src/jarvis/server/skills/collection/activation.py similarity index 77% rename from src/jarvis/jarvis/skills/collection/activation.py rename to src/jarvis/server/skills/collection/activation.py index 27f413dc..577fb0bd 100644 --- a/src/jarvis/jarvis/skills/collection/activation.py +++ b/src/jarvis/server/skills/collection/activation.py @@ -24,24 +24,11 @@ import time from datetime import datetime -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.startup import play_activation_sound -from jarvis.utils.mongoDB import db -from jarvis.enumerations import InputMode, MongoCollections +from server.skills.skill import AssistantSkill class ActivationSkills(AssistantSkill): - @classmethod - def enable_assistant(cls, **kwargs): - """ - Plays activation sound and creates the assistant response according to the day hour. - """ - - input_mode = db.get_documents(collection=MongoCollections.GENERAL_SETTINGS.value)[0]['input_mode'] - if input_mode == InputMode.VOICE.value: - play_activation_sound() - @classmethod def disable_assistant(cls, **kwargs): """ diff --git a/src/jarvis/jarvis/skills/collection/browser.py b/src/jarvis/server/skills/collection/browser.py similarity index 99% rename from src/jarvis/jarvis/skills/collection/browser.py rename to src/jarvis/server/skills/collection/browser.py index 11d35677..1e7c9f0c 100644 --- a/src/jarvis/jarvis/skills/collection/browser.py +++ b/src/jarvis/server/skills/collection/browser.py @@ -30,7 +30,7 @@ from bs4 import BeautifulSoup as bs -from jarvis.skills.skill import AssistantSkill +from server.skills.skill import AssistantSkill class BrowserSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/configuration.py b/src/jarvis/server/skills/collection/configuration.py similarity index 92% rename from src/jarvis/jarvis/skills/collection/configuration.py rename to src/jarvis/server/skills/collection/configuration.py index 211aa0e7..f1be84fb 100644 --- a/src/jarvis/jarvis/skills/collection/configuration.py +++ b/src/jarvis/server/skills/collection/configuration.py @@ -22,12 +22,12 @@ import importlib -from jarvis.skills.skill import AssistantSkill -from jarvis import settings -from jarvis.utils.mongoDB import db -from jarvis.enumerations import InputMode, MongoCollections -from jarvis.utils import console -from jarvis.utils import input +from server.skills.skill import AssistantSkill +from server import settings +from server.utils.mongoDB import db +from server.enumerations import InputMode, MongoCollections +from server.utils import console +from server.utils import input input_mode = db.get_documents(collection='general_settings')[0]['input_mode'] response_in_speech = db.get_documents(collection='general_settings')[0]['response_in_speech'] diff --git a/src/jarvis/jarvis/skills/collection/datetime.py b/src/jarvis/server/skills/collection/datetime.py similarity index 98% rename from src/jarvis/jarvis/skills/collection/datetime.py rename to src/jarvis/server/skills/collection/datetime.py index 67a0ce07..d80e6066 100644 --- a/src/jarvis/jarvis/skills/collection/datetime.py +++ b/src/jarvis/server/skills/collection/datetime.py @@ -21,7 +21,7 @@ # SOFTWARE. from datetime import datetime, date -from jarvis.skills.skill import AssistantSkill +from server.skills.skill import AssistantSkill hour_mapping = {'0': 'twelve', '1': 'one', diff --git a/src/jarvis/jarvis/skills/collection/general.py b/src/jarvis/server/skills/collection/general.py similarity index 98% rename from src/jarvis/jarvis/skills/collection/general.py rename to src/jarvis/server/skills/collection/general.py index 9eda62a1..2bb03230 100644 --- a/src/jarvis/jarvis/skills/collection/general.py +++ b/src/jarvis/server/skills/collection/general.py @@ -22,8 +22,8 @@ import subprocess -from jarvis.skills.skill import AssistantSkill -import jarvis +from server.skills.skill import AssistantSkill +import server def get_master_volume(): diff --git a/src/jarvis/jarvis/skills/collection/history.py b/src/jarvis/server/skills/collection/history.py similarity index 97% rename from src/jarvis/jarvis/skills/collection/history.py rename to src/jarvis/server/skills/collection/history.py index ef4d1a43..10260c94 100644 --- a/src/jarvis/jarvis/skills/collection/history.py +++ b/src/jarvis/server/skills/collection/history.py @@ -22,8 +22,8 @@ import re -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.mongoDB import db +from server.skills.skill import AssistantSkill +from server.utils.mongoDB import db header = """ ----------------------------------------------------------------------------------------------- diff --git a/src/jarvis/jarvis/skills/collection/info.py b/src/jarvis/server/skills/collection/info.py similarity index 97% rename from src/jarvis/jarvis/skills/collection/info.py rename to src/jarvis/server/skills/collection/info.py index 8a208ffd..a2bb068b 100644 --- a/src/jarvis/jarvis/skills/collection/info.py +++ b/src/jarvis/server/skills/collection/info.py @@ -20,9 +20,9 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.mongoDB import db -from jarvis.utils.console import headerize +from server.skills.skill import AssistantSkill +from server.utils.mongoDB import db +from server.utils.console import headerize basic_skills_format = """ ----------------------------------------------------------------------- diff --git a/src/jarvis/jarvis/skills/collection/internet.py b/src/jarvis/server/skills/collection/internet.py similarity index 95% rename from src/jarvis/jarvis/skills/collection/internet.py rename to src/jarvis/server/skills/collection/internet.py index 1902f97d..a29cc70c 100644 --- a/src/jarvis/jarvis/skills/collection/internet.py +++ b/src/jarvis/server/skills/collection/internet.py @@ -24,8 +24,8 @@ import logging import speedtest -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.startup import internet_connectivity_check +from server.skills.skill import AssistantSkill +from server.utils.startup import internet_connectivity_check class InternetSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/libreoffice.py b/src/jarvis/server/skills/collection/libreoffice.py similarity index 97% rename from src/jarvis/jarvis/skills/collection/libreoffice.py rename to src/jarvis/server/skills/collection/libreoffice.py index 6a76b72b..09450a37 100644 --- a/src/jarvis/jarvis/skills/collection/libreoffice.py +++ b/src/jarvis/server/skills/collection/libreoffice.py @@ -22,7 +22,7 @@ import subprocess -from jarvis.skills.skill import AssistantSkill +from server.skills.skill import AssistantSkill class LibreofficeSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/linux.py b/src/jarvis/server/skills/collection/linux.py similarity index 98% rename from src/jarvis/jarvis/skills/collection/linux.py rename to src/jarvis/server/skills/collection/linux.py index 88528f9b..ff54cd73 100644 --- a/src/jarvis/jarvis/skills/collection/linux.py +++ b/src/jarvis/server/skills/collection/linux.py @@ -24,7 +24,7 @@ import logging import time -from jarvis.skills.skill import AssistantSkill +from server.skills.skill import AssistantSkill class LinuxAppSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/location.py b/src/jarvis/server/skills/collection/location.py similarity index 93% rename from src/jarvis/jarvis/skills/collection/location.py rename to src/jarvis/server/skills/collection/location.py index c8dc34c6..616da410 100644 --- a/src/jarvis/jarvis/skills/collection/location.py +++ b/src/jarvis/server/skills/collection/location.py @@ -24,9 +24,9 @@ import json import logging -from jarvis.settings import IPSTACK_API -from jarvis.skills.collection.internet import InternetSkills -from jarvis.skills.skill import AssistantSkill +from server.settings import IPSTACK_API +from server.skills.collection.internet import InternetSkills +from server.skills.skill import AssistantSkill class LocationSkill(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/math.py b/src/jarvis/server/skills/collection/math.py similarity index 96% rename from src/jarvis/jarvis/skills/collection/math.py rename to src/jarvis/server/skills/collection/math.py index e5e5957e..a9566f4a 100644 --- a/src/jarvis/jarvis/skills/collection/math.py +++ b/src/jarvis/server/skills/collection/math.py @@ -22,8 +22,8 @@ from word2number import w2n -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.mapping import math_symbols_mapping +from server.skills.skill import AssistantSkill +from server.utils.mapping import math_symbols_mapping class MathSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/remember.py b/src/jarvis/server/skills/collection/remember.py similarity index 96% rename from src/jarvis/jarvis/skills/collection/remember.py rename to src/jarvis/server/skills/collection/remember.py index a8e9cca9..008a5a18 100644 --- a/src/jarvis/jarvis/skills/collection/remember.py +++ b/src/jarvis/server/skills/collection/remember.py @@ -21,9 +21,9 @@ # SOFTWARE. -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.mongoDB import db -from jarvis.utils import input +from server.skills.skill import AssistantSkill +from server.utils.mongoDB import db +from server.utils import input header = """ ----------------------------------------------------------------------------------------------- diff --git a/src/jarvis/jarvis/skills/collection/reminder.py b/src/jarvis/server/skills/collection/reminder.py similarity index 97% rename from src/jarvis/jarvis/skills/collection/reminder.py rename to src/jarvis/server/skills/collection/reminder.py index a9aad14e..8ed6f79a 100644 --- a/src/jarvis/jarvis/skills/collection/reminder.py +++ b/src/jarvis/server/skills/collection/reminder.py @@ -29,9 +29,9 @@ from playsound import playsound from apscheduler.schedulers.background import BackgroundScheduler -from jarvis.utils.input import validate_digits_input -from jarvis.skills.skill import AssistantSkill -from jarvis.utils.console import OutputStyler +from server.utils.input import validate_digits_input +from server.skills.skill import AssistantSkill +from server.utils.console import OutputStyler time_intervals = { 'seconds': {'variations': ['sec', 'second', 'seconds'], diff --git a/src/jarvis/jarvis/skills/collection/system_health.py b/src/jarvis/server/skills/collection/system_health.py similarity index 97% rename from src/jarvis/jarvis/skills/collection/system_health.py rename to src/jarvis/server/skills/collection/system_health.py index 440a0f46..239fac8b 100644 --- a/src/jarvis/jarvis/skills/collection/system_health.py +++ b/src/jarvis/server/skills/collection/system_health.py @@ -23,7 +23,7 @@ import os import psutil -from jarvis.skills.skill import AssistantSkill +from server.skills.skill import AssistantSkill class SystemHealthSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/text.py b/src/jarvis/server/skills/collection/text.py similarity index 97% rename from src/jarvis/jarvis/skills/collection/text.py rename to src/jarvis/server/skills/collection/text.py index 9cf0eefb..8c8c0673 100644 --- a/src/jarvis/jarvis/skills/collection/text.py +++ b/src/jarvis/server/skills/collection/text.py @@ -23,7 +23,7 @@ import re import time -from jarvis.skills.skill import AssistantSkill +from server.skills.skill import AssistantSkill class WordSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/weather.py b/src/jarvis/server/skills/collection/weather.py similarity index 95% rename from src/jarvis/jarvis/skills/collection/weather.py rename to src/jarvis/server/skills/collection/weather.py index ed89438d..3dea321a 100644 --- a/src/jarvis/jarvis/skills/collection/weather.py +++ b/src/jarvis/server/skills/collection/weather.py @@ -24,10 +24,10 @@ from pyowm import OWM -from jarvis.settings import WEATHER_API -from jarvis.skills.collection.location import LocationSkill -from jarvis.skills.collection.internet import InternetSkills -from jarvis.skills.skill import AssistantSkill +from server.settings import WEATHER_API +from server.skills.collection.location import LocationSkill +from server.skills.collection.internet import InternetSkills +from server.skills.skill import AssistantSkill class WeatherSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/collection/wolframalpha.py b/src/jarvis/server/skills/collection/wolframalpha.py similarity index 94% rename from src/jarvis/jarvis/skills/collection/wolframalpha.py rename to src/jarvis/server/skills/collection/wolframalpha.py index d264d4b1..907b1dd9 100644 --- a/src/jarvis/jarvis/skills/collection/wolframalpha.py +++ b/src/jarvis/server/skills/collection/wolframalpha.py @@ -22,9 +22,9 @@ import wolframalpha -from jarvis.settings import WOLFRAMALPHA_API -from jarvis.skills.collection.internet import InternetSkills -from jarvis.skills.skill import AssistantSkill +from server.settings import WOLFRAMALPHA_API +from server.skills.collection.internet import InternetSkills +from server.skills.skill import AssistantSkill class WolframSkills(AssistantSkill): diff --git a/src/jarvis/jarvis/skills/registry.py b/src/jarvis/server/skills/registry.py similarity index 62% rename from src/jarvis/jarvis/skills/registry.py rename to src/jarvis/server/skills/registry.py index a96a476d..28dec1a6 100644 --- a/src/jarvis/jarvis/skills/registry.py +++ b/src/jarvis/server/skills/registry.py @@ -20,24 +20,24 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from jarvis.skills.collection.activation import ActivationSkills -from jarvis.skills.collection.info import AssistantInfoSkills -from jarvis.skills.collection.datetime import DatetimeSkills -from jarvis.skills.collection.browser import BrowserSkills -from jarvis.skills.collection.general import UtilSkills -from jarvis.skills.collection.internet import InternetSkills -from jarvis.skills.collection.libreoffice import LibreofficeSkills -from jarvis.skills.collection.linux import LinuxAppSkills -from jarvis.skills.collection.location import LocationSkill -from jarvis.skills.collection.reminder import ReminderSkills -from jarvis.skills.collection.system_health import SystemHealthSkills -from jarvis.skills.collection.weather import WeatherSkills -from jarvis.skills.collection.text import WordSkills -from jarvis.skills.collection.history import HistorySkills -from jarvis.skills.collection.remember import RememberSkills -from jarvis.skills.collection.math import MathSkills -from jarvis.utils.mapping import math_tags -from jarvis.skills.collection.configuration import ConfigurationSkills +from server.skills.collection.activation import ActivationSkills +from server.skills.collection.info import AssistantInfoSkills +#from server.skills.collection.datetime import DatetimeSkills +from server.skills.collection.browser import BrowserSkills +from server.skills.collection.general import UtilSkills +#from server.skills.collection.internet import InternetSkills +from server.skills.collection.libreoffice import LibreofficeSkills +from server.skills.collection.linux import LinuxAppSkills +# from server.skills.collection.location import LocationSkill +#from server.skills.collection.reminder import ReminderSkills +#from server.skills.collection.system_health import SystemHealthSkills +#from server.skills.collection.weather import WeatherSkills +from server.skills.collection.text import WordSkills +from server.skills.collection.history import HistorySkills +#from server.skills.collection.remember import RememberSkills +from server.skills.collection.math import MathSkills +from server.utils.mapping import math_tags +#from server.skills.collection.configuration import ConfigurationSkills # All available assistant skills # Keys description: @@ -76,19 +76,19 @@ 'description': 'Tells the daily news (find on Google newsfeed)' }, - { - 'enable': True, - 'func': DatetimeSkills.tell_the_time, - 'tags': 'time, hour', - 'description': 'Tells the current time' - }, + # { + # 'enable': True, + # 'func': DatetimeSkills.tell_the_time, + # 'tags': 'time, hour', + # 'description': 'Tells the current time' + # }, - { - 'enable': True, - 'func': DatetimeSkills.tell_the_date, - 'tags': 'date', - 'description': 'Tells the current date' - }, + # { + # 'enable': True, + # 'func': DatetimeSkills.tell_the_date, + # 'tags': 'date', + # 'description': 'Tells the current date' + # }, { 'enable': True, @@ -111,12 +111,12 @@ 'description': 'A list with all the available skills' }, - { - 'enable': True, - 'func': WeatherSkills.tell_the_weather, - 'tags': 'weather, temperature, weather prediction', - 'description': 'Tells the weather for a location (default in current location)' - }, + # { + # 'enable': True, + # 'func': WeatherSkills.tell_the_weather, + # 'tags': 'weather, temperature, weather prediction', + # 'description': 'Tells the weather for a location (default in current location)' + # }, { 'enable': True, @@ -146,13 +146,13 @@ 'description': 'Opens impress application' }, - { - 'enable': True, - 'func': SystemHealthSkills.tell_memory_consumption, - 'tags': 'ram, ram usage, memory, memory consumption', - 'description': 'The assistant current memory consumption, ' + # { + # 'enable': True, + # 'func': SystemHealthSkills.tell_memory_consumption, + # 'tags': 'ram, ram usage, memory, memory consumption', + # 'description': 'The assistant current memory consumption, ' - }, + # }, { 'enable': True, @@ -161,19 +161,20 @@ 'description': 'Plays music in Youtube' }, - { - 'enable': True, - 'func': InternetSkills.run_speedtest, - 'tags': 'speedtest, internet speed, ping', - 'description': 'Checks internet speed' - }, + #{ + # 'enable': True, + # 'func': InternetSkills.run_speedtest, + # 'tags': 'speedtest, internet speed, ping', + # 'description': 'Checks internet speed' + # + # }, - { - 'enable': True, - 'func': InternetSkills.internet_availability, - 'tags': 'internet conection', - 'description': 'Checks for internet availability' - }, + #{ + # 'enable': True, + # 'func': InternetSkills.internet_availability, + # 'tags': 'internet conection', + # 'description': 'Checks for internet availability' + #}, { 'enable': True, @@ -182,12 +183,12 @@ 'description': 'Spells a word' }, - { - 'enable': True, - 'func': ReminderSkills.create_reminder, - 'tags': 'reminder', - 'description': 'Create a time reminder' - }, + # { + # 'enable': True, + # 'func': ReminderSkills.create_reminder, + # 'tags': 'reminder', + # 'description': 'Create a time reminder' + # }, { 'enable': True, @@ -217,12 +218,12 @@ 'description': 'Ask to open new bash' }, - { - 'enable': True, - 'func': LocationSkill.get_current_location, - 'tags': 'my location, current location', - 'description': 'Ask to tell you your current location' - }, + # { + # 'enable': True, + # 'func': LocationSkill.get_current_location, + # 'tags': 'my location, current location', + # 'description': 'Ask to tell you your current location' + # }, { 'enable': True, @@ -231,26 +232,26 @@ 'description': 'Ask to tell you asked commands' }, - { - 'enable': True, - 'func': RememberSkills.remember, - 'tags': 'remember', - 'description': 'Remember question - answer pairs' - }, + # { + # 'enable': True, + # 'func': RememberSkills.remember, + # 'tags': 'remember', + # 'description': 'Remember question - answer pairs' + # }, - { - 'enable': True, - 'func': RememberSkills.tell_response, - 'tags': '', - 'description': 'Util skill, there is no tags to call it' - }, + # { + # 'enable': True, + # 'func': RememberSkills.tell_response, + # 'tags': '', + # 'description': 'Util skill, there is no tags to call it' + # }, - { - 'enable': True, - 'func': RememberSkills.clear_learned_skills, - 'tags': 'clear learned skills, drop learned skills, remove learned skills', - 'description': 'Clear the learned skills' - }, + # { + # 'enable': True, + # 'func': RememberSkills.clear_learned_skills, + # 'tags': 'clear learned skills, drop learned skills, remove learned skills', + # 'description': 'Clear the learned skills' + # }, { 'enable': True, @@ -259,12 +260,12 @@ 'description': 'Clears bash console' }, - { - 'enable': True, - 'func': ReminderSkills.set_alarm, - 'tags': 'alarm, set alarm', - 'description': 'Set daily alarm (the assistant service should be running)' - }, + # { + # 'enable': True, + # 'func': ReminderSkills.set_alarm, + # 'tags': 'alarm, set alarm', + # 'description': 'Set daily alarm (the assistant service should be running)' + # }, { 'enable': True, @@ -273,12 +274,12 @@ 'description': 'Do basic math calculations in bash terminal e.g " (5+5) ^ 2"' }, - { - 'enable': True, - 'func': ConfigurationSkills.configure_assistant, - 'tags': 'configure, change settings', - 'description': 'Change the assistant setting values' - }, + # { + # 'enable': True, + # 'func': ConfigurationSkills.configure_assistant, + # 'tags': 'configure, change settings', + # 'description': 'Change the assistant setting values' + # }, { 'enable': True, @@ -307,10 +308,9 @@ 'tags': 'volume max', 'description': 'Set max the speakers master volume' }, - ] -# Add name key in both BASIC_SKILLS and CONTROL_SKILLS +#Add name key in both BASIC_SKILLS and CONTROL_SKILLS for skill in BASIC_SKILLS + CONTROL_SKILLS: skill['name'] = skill['func'].__name__ diff --git a/src/jarvis/jarvis/skills/skill.py b/src/jarvis/server/skills/skill.py similarity index 91% rename from src/jarvis/jarvis/skills/skill.py rename to src/jarvis/server/skills/skill.py index dd993dad..501443f5 100644 --- a/src/jarvis/jarvis/skills/skill.py +++ b/src/jarvis/server/skills/skill.py @@ -20,8 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from jarvis.core.console import ConsoleManager -import jarvis +import server class AssistantSkill: @@ -30,7 +29,6 @@ class AssistantSkill: """ first_activation = True - console_manager = ConsoleManager() @classmethod def console(cls, text='', debug_log=None, info_log=None, warn_log=None, error_log=None, refresh_console=True): @@ -52,11 +50,11 @@ def response(cls, text, refresh_console=True): - TTT Engine: The response is only in text - TTS Engine: The response is in voice and text """ - jarvis.output_engine.assistant_response(text, refresh_console=refresh_console) + print(text, refresh_console) @classmethod def user_input(cls): - user_input = jarvis.input_engine.recognize_input(already_activated=True) + user_input = "voice" return user_input @classmethod diff --git a/src/jarvis/server/utils/__init__.py b/src/jarvis/server/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/jarvis/jarvis/utils/console.py b/src/jarvis/server/utils/console.py similarity index 98% rename from src/jarvis/jarvis/utils/console.py rename to src/jarvis/server/utils/console.py index fe8f563f..19f6d0c2 100644 --- a/src/jarvis/jarvis/utils/console.py +++ b/src/jarvis/server/utils/console.py @@ -22,7 +22,7 @@ import os -from jarvis._version import __version__ +from server._version import __version__ class OutputStyler: diff --git a/src/jarvis/jarvis/utils/input.py b/src/jarvis/server/utils/input.py similarity index 97% rename from src/jarvis/jarvis/utils/input.py rename to src/jarvis/server/utils/input.py index 7b0cefa2..3d723845 100644 --- a/src/jarvis/jarvis/utils/input.py +++ b/src/jarvis/server/utils/input.py @@ -20,8 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import jarvis -from jarvis.core.console import ConsoleManager +from server.core.console import ConsoleManager console_manager = ConsoleManager() diff --git a/src/jarvis/jarvis/utils/mapping.py b/src/jarvis/server/utils/mapping.py similarity index 100% rename from src/jarvis/jarvis/utils/mapping.py rename to src/jarvis/server/utils/mapping.py diff --git a/src/jarvis/jarvis/utils/mongoDB.py b/src/jarvis/server/utils/mongoDB.py similarity index 89% rename from src/jarvis/jarvis/utils/mongoDB.py rename to src/jarvis/server/utils/mongoDB.py index 0f78940a..a4c29762 100644 --- a/src/jarvis/jarvis/utils/mongoDB.py +++ b/src/jarvis/server/utils/mongoDB.py @@ -22,6 +22,7 @@ import logging from pymongo import MongoClient, DESCENDING +from bson.objectid import ObjectId class MongoDB: @@ -29,8 +30,8 @@ class MongoDB: This class encapsulates methods related to MongoDB """ - def __init__(self, host='localhost', port=27017): - self.client = MongoClient(host, port) + def __init__(self, host='mongodb_container', port=27017): + self.client = MongoClient(f'mongodb://root:rootpassword@{host}:{port}') self.database = self.client['jarvis'] def get_documents(self, collection, key=None, limit=None): @@ -72,7 +73,10 @@ def is_collection_empty(self, collection): return collection_obj.estimated_document_count() == 0 except Exception as e: logging.error(e) - + def findOne(self, collection, obj_id): + print(collection) + collection_obj = self.database[collection] + return collection_obj.find_one({'_id':ObjectId(obj_id)}) # ---------------------------------------------------------------------------------------------------------------------- # Create MongoDB connection instance diff --git a/src/jarvis/jarvis/utils/startup.py b/src/jarvis/server/utils/startup.py similarity index 62% rename from src/jarvis/jarvis/utils/startup.py rename to src/jarvis/server/utils/startup.py index 61f9f834..4507e39a 100644 --- a/src/jarvis/jarvis/utils/startup.py +++ b/src/jarvis/server/utils/startup.py @@ -20,40 +20,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import os -import time -import requests import logging -from playsound import playsound - -from jarvis.utils import console -from jarvis.enumerations import MongoCollections -from jarvis.core.console import ConsoleManager - - -def play_activation_sound(): - """ - Plays a sound when the assistant enables. - """ - utils_dir = os.path.dirname(__file__) - activation_soundfile = os.path.join(utils_dir, '..', 'files', 'activation_sound.wav') - playsound(activation_soundfile) - - -def internet_connectivity_check(url='http://www.google.com/', timeout=2): - """ - Checks for internet connection availability based on google page. - """ - console_manager = ConsoleManager() - try: - console_manager.console_output(info_log='Checking internet connection..') - _ = requests.get(url, timeout=timeout) - console_manager.console_output(info_log='Internet connection passed!') - return True - except requests.ConnectionError: - console_manager.console_output(warn_log="No internet connection.") - console_manager.console_output(warn_log="Skills with internet connection will not work") - return False +from server.enumerations import MongoCollections def configure_MongoDB(db, settings): @@ -64,11 +32,6 @@ def configure_MongoDB(db, settings): # Only in first time or if 'general_settings' collection is deleted if db.is_collection_empty(collection=MongoCollections.GENERAL_SETTINGS.value): - console.print_console_header() - print('First time configuration..') - console.print_console_header() - time.sleep(1) - default_assistant_name = settings.DEFAULT_GENERAL_SETTINGS['assistant_name'] default_input_mode = settings.DEFAULT_GENERAL_SETTINGS['input_mode'] default_response_in_speech = settings.DEFAULT_GENERAL_SETTINGS['response_in_speech'] @@ -81,12 +44,6 @@ def configure_MongoDB(db, settings): try: db.update_collection(collection=MongoCollections.GENERAL_SETTINGS.value, documents=[new_settings]) - console.print_console_header('Assistant Name') - print('Assistant name- {0} configured successfully!'.format(default_assistant_name.lower())) - print('Input mode - {0} configured successfully!'.format(default_input_mode)) - print('Speech response output- {0} configured successfully!'.format(default_response_in_speech)) - time.sleep(2) - except Exception as e: logging.error('Failed to configure assistant settings with error message {0}'.format(e)) @@ -94,7 +51,7 @@ def configure_MongoDB(db, settings): # Load skills # ------------------------------------------------------------------------------------------------------------------ - from jarvis.skills.registry import CONTROL_SKILLS, ENABLED_BASIC_SKILLS + from server.skills.registry import CONTROL_SKILLS, ENABLED_BASIC_SKILLS all_skills = { MongoCollections.CONTROL_SKILLS.value: CONTROL_SKILLS, diff --git a/src/jarvis/start.py b/src/jarvis/start.py index 86d0aead..ea174955 100644 --- a/src/jarvis/start.py +++ b/src/jarvis/start.py @@ -20,10 +20,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from jarvis import settings -from jarvis.utils.startup import internet_connectivity_check -from jarvis.core.processor import Processor -from jarvis.core.console import ConsoleManager +from server import settings +from server.utils.startup import internet_connectivity_check +from server.core.processor import Processor +from server.core.console import ConsoleManager def main(): diff --git a/src/tests/skill_analyzer_tests.py b/src/tests/skill_analyzer_tests.py index f252590e..a0033d6f 100644 --- a/src/tests/skill_analyzer_tests.py +++ b/src/tests/skill_analyzer_tests.py @@ -24,11 +24,11 @@ from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity -from jarvis import settings -from jarvis.skills.registry import CONTROL_SKILLS, BASIC_SKILLS, ENABLED_BASIC_SKILLS -from jarvis.enumerations import MongoCollections -from jarvis.skills.analyzer import SkillAnalyzer -from jarvis.utils.mongoDB import db +from jarvis.server import settings +from jarvis.server.skills.registry import CONTROL_SKILLS, BASIC_SKILLS, ENABLED_BASIC_SKILLS +from jarvis.server.enumerations import MongoCollections +from jarvis.server.skills.analyzer import SkillAnalyzer +from jarvis.server.utils.mongoDB import db class TestSkillMatching(unittest.TestCase): diff --git a/src/tests/test_settings/test_settings.py b/src/tests/test_settings/test_settings.py index 83c07133..95f744a7 100644 --- a/src/tests/test_settings/test_settings.py +++ b/src/tests/test_settings/test_settings.py @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from jarvis.settings import * +from jarvis.server.settings import * ROOT_LOG_CONF = { 'version': 1,