Commit Graph

56 Commits (3d18df3d6d72ec5e1f858c98bcb9e633d99258ca)

Author SHA1 Message Date
Åke Forslund a66e23d8ab start processess using python -m
- rename process main.py to __main__.py
- update start-mycroft.sh/stop-mycroft.sh scripts to reflect the change
2018-08-16 15:21:22 +02:00
Åke Forslund be8711a438 Use time.monotonic instead of monotonic module
Replace the monotonic time from the monotonic module with the built in time.monotonic
2018-06-11 16:05:50 +02:00
Åke Forslund 2a34833394 Make data optional in Message.reply()
To make reply work in the same manner as a newly created message data
shall be optional. This allows mistakes like L1141 of
mycroft/skills/core.py, where the data field isn't set. (And causes an
exception when the line is hit.)
2018-06-01 10:23:13 +02:00
Åke Forslund a2993e4ba6 Remove backwards compatibility with python 2.7 2018-04-27 08:51:47 -05:00
Åke Forslund d1d4256e05 Fix websocket reconnect
Making sure the reconnect code is reached after websocket closed error.
2018-04-19 16:00:01 -05:00
Matthew D. Scholefield 10bd9a1cf3 Change initial kill to SIGINT
This sends a ctrl+c signal to each process which will allow code to exit properly by handling KeyboardInterrupt
Other notable changes:
 - create_daemon method used to clean up create daemon threads
 - create_echo_function used to reduce code duplication with messagebus
 echo functions
 - wait_for_exit_signal used to wait for ctrl+c (SIGINT)
 - reset_sigint_handler used to ensure SIGINT will raise KeyboardInterrupt
2018-04-11 21:29:10 -05:00
Åke Forslund 27fcd63e96 Fix error on wait_for_response timeout.
Using pyee 1.0.1 handlers registered with once can't be removed. This handles the value error raised in this case.
2018-03-29 12:10:20 -05:00
Åke Forslund de6d3e2f11 Fix deadlock
The emitted event "open" will in many cases call ws.emit, and this will
lock if the connected_event isn't set. This makes sure that the
connected_event is set before emitting the open event.
2018-03-29 10:09:11 -05:00
Åke 46f6f734e3
Merge pull request #1509 from MycroftAI/feature/wait-for-messagebus
Wait for messagebus before emitting a message
2018-03-28 19:28:35 -05:00
Matthew D. Scholefield 5c8cf053a0 Remove code that waits for websocket to open
This is unnecessary now that WebsocketClient does this automatically
2018-03-28 19:19:56 -05:00
Matthew D. Scholefield e6a211a0aa Wait for websocket to connect before interacting with messagebus 2018-03-28 18:40:50 -05:00
Åke Forslund 424001c973 Fix utterance_remainder for normalized keywords
If the sentence is normalized the utterance_remainder() method fails if
the intent keyword expects normalization.

Example the joking skill has an intent "tell me joke" which is the
normalized equivalent of "tell me a joke". In this case the intent wouldn't be removed from the remainder and instead of an empty string the utterance remainder would contain "tell me joke"
2018-03-28 16:17:53 -05:00
jarbasai 364370abad more robust utterance_remainder 2018-03-23 14:59:51 +00:00
Åke f8fec82905 wait_for_response method for synchronous messagebus communication (#1423)
* Add wait_for_response method to Websock client

The client handles the basic case when wanting to do a syncronous
request-response action.

The method sets up a handler waits for the response and handles timeout.

The expected format is that the reply message should have the same type as
the original message with ".response" appended.

An method in the Message class has been added to create a standard response for
a message.

* Let the :skills command use wait_for_response

* Minor docstring changes

Fixed typos and refined text
2018-02-15 01:39:11 -06:00
penrods e142b1f92b Update help to reflect changed message name 2018-01-17 21:51:39 -06:00
Steve Penrod f8f3d3534c Add message.utterance_remainder() method (#1314)
Add message.utterance_remainder() method

This helper will return the portion of an utterance not
consumed by the Adapt parser already.  For example,
"turn on the kitchen light" would have a remainder of
"the kitchen" if there was an Intent with entities that
matched "turn on" and "light". The returned text is passed
through normalize().
2018-01-03 14:26:49 +01:00
Åke 742558046d Python 2/3 compatibility (#1259)
Add Python 2/3 compatibility

====  Tech Notes ====
This allows the main bus, skills and cli to be run in both python 2.7 and
3.5+.

Mainly trivial changes
- syntax for exceptions
- logic for importing correct Queue module
- .iteritems -> future.utils.iteritems when accessing dicts key value
pairs

* Allow audio service to be run in python 3
* Make speech client work with python 3
* Importing of Queue version dependent
* Exception syntax corrected
* Creating sound buffer is version dependant
- Adapt context use range from builtins
- Use compatible next() instead of .next() when walking the skill
directory

* Make CLI Python 3 Compatible
- Use compatible BytesIO instead of StringsIO
- Open files as text instead of binary
- Make sure integer divisions are used

* Make messagebus send compatible
* Fix failing travis

Re-add future 0.16.0

* Make string checks compatible
* basestring doesn't exist in python 3 so it's imported from the "past"
* Fix latest compatibility issues in speech client
- handle urllib
- handle encoding before calling md5

* Make Api.build_json() python 2/3 compatible
2017-12-18 17:24:21 -06:00
gaurav 3a40014122 Issue-1227 Fix arg =[] and ={}
Issue-1227 fixed line length

Issue-1227 fixed pep 8 E124

Issue-1227 fixed formatting
2017-11-22 23:17:16 -06:00
Åke Forslund 1093dc0ef0 Handle missing messagebus in a correct way
==== Tech notes ====
The send script will throw an IOerror exception if the bus service isn't
started. This correctly catches it and emits a single warning.
2017-11-10 15:27:17 +01:00
Åke Forslund 3e878bd59f Replace ConfigurationManger with Configuration 2017-10-26 19:02:32 -04:00
Åke Forslund 7814e207d3 Fix sending message in stop_speaking()
====  Tech Notes ====
Previous approach did not work as websocket client was not running, this
uses the standalone send functionality recently added to send a single
message.
2017-10-26 18:48:47 -04:00
penrods 3d64509b25 SkillManager, msm messagebus notifications
Significantly reworked the loading/updating of Skills.  Unified
all management under a single SkillManager class.  This class
runs as a thread that initially loads, upgrades (via MSM)
and reloads skills.

Removed the independent threads that were being run.  The skill
updating still happens once an hour, but works in conjunction
with the scan to reload modified skills.  Also added messagebus
notifications from MSM so mycroft-core can pause reloading
skills until the installation is complete.

Added a new mycroft.messagebus.send module to allow command
line interaction with the messagebus, e.g.:
   python -m mycroft.messagebus.send mycroft.wifi.start
   python -m mycroft.messagebus.send speak '{"utterance":"hello"}'

==== Fixed Issues ====
MSM installs that have PIP dependencies were failing, as the
load would occur after code was retrieved but before PIP install
completed.  Restart was required to load new skills.

====  Tech Notes ====
TODO: Change the way we manage modules.  The auto-load of the
remote configuration for the module is silly, slow and wasteful.

I made the WebsocketClient.build_url() method static in
anticipation of being able to do this more efficiently when the
submodule load doesn't hit the remove API automatically.

==== Localization Notes ====
Modified 'sorry I couldn't install default skills' message.

==== Protocol Notes ====
MSM now generates:
  msm.updating
  msm.installing
  msm.install.succeeded     { "skill" : name }
  msm.install.failed        { "skill" : name, "error" : code }
  msm.installed
  msm.updated
  msm.removing
  msm.remove.succeeded      { "skill" : name }
  msm.remove.failed { "skill" : name, "error" : code }
  msm.removed

An update can now be forced by posting 'skillmanager.update' to the
messagebus.
2017-10-13 02:21:58 -05:00
penrods 8f2e5d9498 Change to Apache 2.0 license from GPLv3.0
This commit officially switches the mycroft-core repository from
GPLv3.0 licensing to Apache 2.0.  All dependencies on GPL'ed code
have been removed and we have contacted all previous contributors
with still-existing code in the repository to agree to this change.

Going forward, all contributors will sign a Contributor License
Agreement (CLA) by visiting https://mycroft.ai/cla, then they will
be included in the Mycroft Project's overall Contributor list,
found at: https://github.com/MycroftAI/contributors.  This cleanly
protects the project, the contributor and all who use the technology
to build upon.

Futher discussion can be found at this blog post:
https://mycroft.ai/blog/right-license/

This commit also removes all __author__="" from the code.  These
lines are painful to maintain and the etiquette surrounding their
maintainence is unclear.  Do you remove a name from the list if the
last line of code the wrote gets replaced?  Etc.  Now all
contributors are publicly acknowledged in the aforementioned repo,
and actual authorship is maintained by Github in a much more
effective and elegant way!

Finally, a few references to "Mycroft AI" were changed to the correct
legal entity name "Mycroft AI Inc."

==== Fixed Issues ====
#403 Update License.md and file headers to Apache 2.0
#400 Update LICENSE.md

====  Documentation Notes ====
Deprecated the ScheduledSkill and ScheduledCRUDSkill classes.
These capabilities have been superceded by the more flexible MycroftSkill
class methods schedule_event(), schedule_repeating_event(), update_event(),
and cancel_event().
2017-10-04 01:28:44 -05:00
Matthew D. Scholefield e7474ccc29 Fix tornado autoreload error 2017-09-21 09:37:08 -05:00
Matthew D. Scholefield 5e392f34aa Optimize imports
Remove unused imports and group local vs external alphabetically
2017-09-18 16:07:50 -05:00
Matthew D. Scholefield cfdc405da5 Add new LOG class 2017-09-18 13:56:06 -05:00
Åke Forslund 1e74dd3ebe Restore reconnect timer on ws on connect
====  Tech Notes ====
The retry timer doubles on each failed connect attempt but was never
restored to the original time causing an unncessary long wait time. This
restores the timer on each sucessful connection.
2017-09-14 14:22:06 -05:00
Åke Forslund a33c07621b Reduce configuration loading in module scope
====  Tech Notes ====
Autoloading configuration in submodules is bad for testing purposes and
should be reduced. It takes time and adds the possibility of altering
the base conditions for the tests

- mycroft/skills/core: global configuration moved to main.py
- mycroft/messagebus/client/ws.py global config moved to __init__ of
Websocket
- client/speech/mic.py global config moved to ResponsiveRecognizer
__init__() method
- client/enclosure/display_manager.py
 - get_ipc_directory() called in methods where used
2017-09-13 12:51:48 -05:00
kfezer cc129f615d Update message.py 2017-06-30 10:03:24 -07:00
Art McGee 3872dafd81 This add comments to document the message class
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>

	mycroft/messagebus/message.py
2017-06-30 09:57:00 -07:00
Art McGee 94e8705264 Fixes and Typeo's
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>

	mycroft/messagebus/message.py
2017-06-30 09:54:15 -07:00
Steve Penrod 96c08189ed Revert "This add comments to document the message class" 2017-06-30 00:41:20 +02:00
Åke b98b020da2 Merge pull request #854 from forslund/gregmccoy-feature/issue-788
Gregmccoy feature/issue 788
2017-06-29 20:32:08 +02:00
Art McGee 355225ee3d Merge branch 'dev' into amcgee7_docs 2017-06-29 07:17:19 -07:00
Åke Forslund 10e4660e3e Add some safety to remove_all_listers
The same websocket client object is often used between many different
parts of the software. (for example skills) This will reduce the risk
that all listeners are removed for all events by mistake. It it still
possible toi do this by calling
`WebsocketClient.ws.remove_all_listers()` if there would be need for
this mechanism.
2017-06-29 08:09:23 +02:00
Greg McCoy d7d0dbec5e Issues 788 - Adding remove_all_listeners 2017-06-29 07:54:05 +02:00
Art McGee 57ae8bac4c Fixes and Typeo's
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>
2017-06-26 13:52:52 -07:00
Art McGee 11c6ae4a07 This add comments to document the message class
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>
2017-06-26 13:52:52 -07:00
Åke Forslund 2791b3242b Allow service to reload as intended
- Add reload hook to delete PID lock
- Correctly detect PID in lock file
2017-06-16 12:26:54 +02:00
Åke Forslund 95641451fa Fix PEP-8 issues 2017-04-08 11:08:13 +02:00
dmendyke c7645be49c Added PID locking to both 'voice' and 'service' services. 2017-04-06 12:59:31 -07:00
Jonathan D'Orleans 99ff4e3ce8 Issues 351 - Tartarus Integration
- Master rebase
- Renaming Websocket variable from client to ws
- Resetting enclosure when ws open
- Formatting pairing skill
2016-12-17 14:53:22 -05:00
Jonathan D'Orleans ccceb62b7a Issues 351 - Renaming metadata to data and simplifying data usage 2016-12-17 10:15:24 -05:00
Jonathan D'Orleans 348cc3fac0 Issues 351 - Renaming message_type to type 2016-12-17 10:15:24 -05:00
Jonathan D'Orleans db9c12c122 Issues 351 - Merging service and client web socket configuration 2016-12-17 10:14:42 -05:00
Joshua McDonald 7026e334c2 Issue-212 added check_origin: true to messagebus server to allow browser connections to Mycroft (#215) 2016-06-24 15:25:59 -05:00
Ethan Ward decd04f626 Issues 198 - fix pairing skill 2016-06-20 16:52:05 -05:00
the7erm 11726d7d67 #131 added if for situations where the host is empty (#132)
* #131 added if for situations where the host is empty

* #132 modified mycroft.ini file and added exception.

* #132 modified mycroft.ini file and added exception.

* #132 removed comment

* #131 changed to ValueError, and added checks for ssl, port, host and path

* #131 changed to ValueError, and added checks for ssl, port, host and path

* #131 reverted utils - went another route

* #131 added empty string for ssl detection

* #131 created validate_param

* #131 pep8

* #131 oops missed route
2016-06-20 15:44:42 -04:00
Jonathan D'Orleans c46bc43e72 Issues 96 - Moving configuration to init 2016-06-09 18:26:10 -04:00
Jonathan D'Orleans efff3dbda6 Issues 96 - Renaming get_config to get only 2016-06-09 18:25:37 -04:00