diff --git a/src/controller/buffers/twitterBuffers.py b/src/controller/buffers/twitterBuffers.py
index 5b9701c0..4450d996 100644
--- a/src/controller/buffers/twitterBuffers.py
+++ b/src/controller/buffers/twitterBuffers.py
@@ -128,7 +128,7 @@ class baseBufferController(baseBuffers.buffer):
tweetsList = []
tweet_id = tweet["id"]
message = None
- if tweet.has_key("message"):
+ if "message" in tweet:
message = tweet["message"]
try:
tweet = self.session.twitter.show_status(id=tweet_id, include_ext_alt_text=True, tweet_mode="extended")
@@ -241,7 +241,7 @@ class baseBufferController(baseBuffers.buffer):
if self.name[:-9] in self.session.settings["other_buffers"]["timelines"]:
self.session.settings["other_buffers"]["timelines"].remove(self.name[:-9])
self.session.settings.write()
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@@ -254,7 +254,7 @@ class baseBufferController(baseBuffers.buffer):
if dlg == widgetUtils.YES:
if self.name[:-9] in self.session.settings["other_buffers"]["favourites_timelines"]:
self.session.settings["other_buffers"]["favourites_timelines"].remove(self.name[:-9])
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@@ -377,7 +377,7 @@ class baseBufferController(baseBuffers.buffer):
self.show_menu(widgetUtils.MENU, pos=self.buffer.list.list.GetPosition())
def get_tweet(self):
- if self.session.db[self.name][self.buffer.list.get_selected()].has_key("retweeted_status"):
+ if "retweeted_status" in self.session.db[self.name][self.buffer.list.get_selected()]:
tweet = self.session.db[self.name][self.buffer.list.get_selected()]["retweeted_status"]
else:
tweet = self.session.db[self.name][self.buffer.list.get_selected()]
@@ -392,7 +392,7 @@ class baseBufferController(baseBuffers.buffer):
tweet = self.get_right_tweet()
screen_name = tweet["user"]["screen_name"]
id = tweet["id"]
- twishort_enabled = tweet.has_key("twishort")
+ twishort_enabled = "twishort" in tweet
users = utils.get_all_mentioned(tweet, self.session.db, field="screen_name")
ids = utils.get_all_mentioned(tweet, self.session.db, field="id_str")
# Build the window title
@@ -489,9 +489,9 @@ class baseBufferController(baseBuffers.buffer):
def _retweet_with_comment(self, tweet, id, comment=''):
# If quoting a retweet, let's quote the original tweet instead the retweet.
- if tweet.has_key("retweeted_status"):
+ if "retweeted_status" in tweet:
tweet = tweet["retweeted_status"]
- if tweet.has_key("full_text"):
+ if "full_text" in tweet:
comments = tweet["full_text"]
else:
comments = tweet["text"]
@@ -723,7 +723,7 @@ class sentDirectMessagesController(directMessagesController):
def __init__(self, *args, **kwargs):
super(sentDirectMessagesController, self).__init__(*args, **kwargs)
- if self.session.db.has_key("sent_direct_messages") == False:
+ if ("sent_direct_messages" in self.session.db) == False:
self.session.db["sent_direct_messages"] = {"items": []}
def get_more_items(self):
@@ -770,7 +770,7 @@ class listBufferController(baseBufferController):
if dlg == widgetUtils.YES:
if self.name[:-5] in self.session.settings["other_buffers"]["lists"]:
self.session.settings["other_buffers"]["lists"].remove(self.name[:-5])
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@@ -805,7 +805,7 @@ class peopleBufferController(baseBufferController):
if dlg == widgetUtils.YES:
if self.name[:-10] in self.session.settings["other_buffers"]["followers_timelines"]:
self.session.settings["other_buffers"]["followers_timelines"].remove(self.name[:-10])
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@@ -819,7 +819,7 @@ class peopleBufferController(baseBufferController):
if dlg == widgetUtils.YES:
if self.name[:-8] in self.session.settings["other_buffers"]["friends_timelines"]:
self.session.settings["other_buffers"]["friends_timelines"].remove(self.name[:-8])
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@@ -1000,7 +1000,7 @@ class searchBufferController(baseBufferController):
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
self.session.settings.write()
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@@ -1051,7 +1051,7 @@ class searchPeopleBufferController(peopleBufferController):
self.args = args
self.kwargs = kwargs
self.function = function
- if self.kwargs.has_key("page") == False:
+ if ("page" in self.kwargs) == False:
self.kwargs["page"] = 1
def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=True):
@@ -1115,7 +1115,7 @@ class searchPeopleBufferController(peopleBufferController):
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
self.session.settings.write()
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@@ -1188,7 +1188,7 @@ class trendsBufferController(baseBuffers.buffer):
if self.name[:-3] in self.session.settings["other_buffers"]["trending_topic_buffers"]:
self.session.settings["other_buffers"]["trending_topic_buffers"].remove(self.name[:-3])
self.session.settings.write()
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@@ -1288,7 +1288,7 @@ class conversationBufferController(searchBufferController):
else:
dlg = widgetUtils.YES
if dlg == widgetUtils.YES:
- if self.session.db.has_key(self.name):
+ if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
diff --git a/src/controller/filterController.py b/src/controller/filterController.py
index 1ed1487a..1ece0bf9 100644
--- a/src/controller/filterController.py
+++ b/src/controller/filterController.py
@@ -30,7 +30,7 @@ class filter(object):
if i["name"] in langs:
langcodes.append(i["code"])
d = dict(in_buffer=self.buffer.name, word=term, regexp=regexp, in_lang=lang_option, languages=langcodes, if_word_exists=contains, allow_rts=allow_rts, allow_quotes=allow_quotes, allow_replies=allow_replies)
- if self.buffer.session.settings["filters"].has_key(title):
+ if title in self.buffer.session.settings["filters"]:
return commonMessageDialogs.existing_filter()
self.buffer.session.settings["filters"][title] = d
self.buffer.session.settings.write()
diff --git a/src/controller/mainController.py b/src/controller/mainController.py
index 74728c43..11b6b27e 100644
--- a/src/controller/mainController.py
+++ b/src/controller/mainController.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import platform
system = platform.system()
import application
@@ -8,15 +9,15 @@ import arrow
if system == "Windows":
from update import updater
from wxUI import (view, dialogs, commonMessageDialogs, sysTrayIcon)
- import settings
+ from . import settings
from extra import SoundsTutorial, ocr
import keystrokeEditor
from keyboard_handler.wx_handler import WXKeyboardHandler
- import userActionsController
- import trendingTopics
- import user
- import listsController
- import filterController
+ from . import userActionsController
+ from . import trendingTopics
+ from . import user
+ from . import listsController
+ from . import filterController
# from issueReporter import issueReporter
elif system == "Linux":
from gtkUI import (view, commonMessageDialogs)
@@ -24,7 +25,7 @@ from sessions.twitter import utils, compose
from sessionmanager import manager, sessionManager
from controller.buffers import baseBuffers, twitterBuffers
-import messages
+from . import messages
import sessions
from sessions.twitter import session as session_
from pubsub import pub
@@ -392,7 +393,7 @@ class Controller(object):
def set_buffer_positions(self, session):
"Sets positions for buffers if values exist in the database."
for i in self.buffers:
- if i.account == session.db["user_name"] and session.db.has_key(i.name+"_pos") and hasattr(i.buffer,'list'):
+ if i.account == session.db["user_name"] and i.name+"_pos" in session.db and hasattr(i.buffer,'list'):
i.buffer.list.select_item(session.db[str(i.name+"_pos")])
def logout_account(self, session_id):
@@ -1563,7 +1564,7 @@ class Controller(object):
output.speak(_(u"Invalid buffer"))
return
tweet = buffer.get_tweet()
- if tweet.has_key("entities") == False or tweet["entities"].has_key("media") == False:
+ if ("entities" in tweet) == False or ("media" in tweet["entities"]) == False:
output.speak(_(u"This tweet doesn't contain images"))
return
if len(tweet["entities"]["media"]) > 1:
diff --git a/src/controller/messages.py b/src/controller/messages.py
index d423764f..8668e6cd 100644
--- a/src/controller/messages.py
+++ b/src/controller/messages.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import re
import platform
-import attach
+from . import attach
import arrow
import languageHandler
system = platform.system()
@@ -206,25 +207,25 @@ class viewTweet(basicTweet):
text = ""
for i in xrange(0, len(tweetList)):
# tweets with message keys are longer tweets, the message value is the full messaje taken from twishort.
- if tweetList[i].has_key("message") and tweetList[i]["is_quote_status"] == False:
+ if "message" in tweetList[i] and tweetList[i]["is_quote_status"] == False:
value = "message"
else:
value = "full_text"
- if tweetList[i].has_key("retweeted_status") and tweetList[i]["is_quote_status"] == False:
- if tweetList[i].has_key("message") == False:
+ if "retweeted_status" in tweetList[i] and tweetList[i]["is_quote_status"] == False:
+ if ("message" in tweetList[i]) == False:
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i]["retweeted_status"]["full_text"])
else:
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i][value])
else:
text = text + " @%s: %s\n" % (tweetList[i]["user"]["screen_name"], tweetList[i][value])
# tweets with extended_entities could include image descriptions.
- if tweetList[i].has_key("extended_entities") and tweetList[i]["extended_entities"].has_key("media"):
+ if "extended_entities" in tweetList[i] and "media" in tweetList[i]["extended_entities"]:
for z in tweetList[i]["extended_entities"]["media"]:
- if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
+ if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
- if tweetList[i].has_key("retweeted_status") and tweetList[i]["retweeted_status"].has_key("extended_entities") and tweetList[i]["retweeted_status"]["extended_entities"].has_key("media"):
+ if "retweeted_status" in tweetList[i] and "extended_entities" in tweetList[i]["retweeted_status"] and "media" in tweetList[i]["retweeted_status"]["extended_entities"]:
for z in tweetList[i]["retweeted_status"]["extended_entities"]["media"]:
- if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
+ if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
# set rt and likes counters.
rt_count = str(tweet["retweet_count"])
@@ -234,25 +235,25 @@ class viewTweet(basicTweet):
original_date = arrow.get(tweet["created_at"], "ddd MMM DD H:m:s Z YYYY", locale="en")
date = original_date.replace(seconds=utc_offset).format(_(u"MMM D, YYYY. H:m"), locale=languageHandler.getLanguage())
if text == "":
- if tweet.has_key("message"):
+ if "message" in tweet:
value = "message"
else:
value = "full_text"
- if tweet.has_key("retweeted_status"):
- if tweet.has_key("message") == False:
+ if "retweeted_status" in tweet:
+ if ("message" in tweet) == False:
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet["retweeted_status"]["full_text"])
else:
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet[value])
else:
text = tweet[value]
text = self.clear_text(text)
- if tweet.has_key("extended_entities") and tweet["extended_entities"].has_key("media"):
+ if "extended_entities" in tweet and "media" in tweet["extended_entities"]:
for z in tweet["extended_entities"]["media"]:
- if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
+ if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
- if tweet.has_key("retweeted_status") and tweet["retweeted_status"].has_key("extended_entities") and tweet["retweeted_status"]["extended_entities"].has_key("media"):
+ if "retweeted_status" in tweet and "extended_entities" in tweet["retweeted_status"] and "media" in tweet["retweeted_status"]["extended_entities"]:
for z in tweet["retweeted_status"]["extended_entities"]["media"]:
- if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
+ if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
self.message = message.viewTweet(text, rt_count, favs_count, source.decode("utf-8"), date)
self.message.set_title(len(text))
diff --git a/src/controller/userActionsController.py b/src/controller/userActionsController.py
index 1d0cc788..f3f40ded 100644
--- a/src/controller/userActionsController.py
+++ b/src/controller/userActionsController.py
@@ -71,7 +71,7 @@ class userActionsController(object):
def ignore_client(self, user):
tweet = self.buffer.get_right_tweet()
- if tweet.has_key("sender"):
+ if "sender" in tweet:
output.speak(_(u"You can't ignore direct messages"))
return
client = re.sub(r"(?s)<.*?>", "", tweet["source"])
diff --git a/src/extra/AudioUploader/audioUploader.py b/src/extra/AudioUploader/audioUploader.py
index afc0fee1..824c64c4 100644
--- a/src/extra/AudioUploader/audioUploader.py
+++ b/src/extra/AudioUploader/audioUploader.py
@@ -16,10 +16,11 @@
# along with this program. If not, see .
#
############################################################
+from __future__ import absolute_import
import widgetUtils
-import wx_ui
-import wx_transfer_dialogs
-import transfer
+from . import wx_ui
+from . import wx_transfer_dialogs
+from . import transfer
import output
import tempfile
import sound
diff --git a/src/extra/AudioUploader/transfer.py b/src/extra/AudioUploader/transfer.py
index c8b9827b..d5671977 100644
--- a/src/extra/AudioUploader/transfer.py
+++ b/src/extra/AudioUploader/transfer.py
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import sys
import threading
import time
import logging
-from utils import convert_bytes
+from .utils import convert_bytes
from pubsub import pub
log = logging.getLogger("extra.AudioUploader.transfer")
from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor
@@ -75,9 +76,9 @@ class Upload(object):
data = self.response.json()
except:
return _("Error in file upload: {0}").format(self.data.content,)
- if data.has_key("url") and data["url"] != "0":
+ if "url" in data and data["url"] != "0":
return data["url"]
- elif data.has_key("error") and data["error"] != "0":
+ elif "error" in data and data["error"] != "0":
return data["error"]
else:
return _("Error in file upload: {0}").format(self.data.content,)
\ No newline at end of file
diff --git a/src/extra/AudioUploader/wx_transfer_dialogs.py b/src/extra/AudioUploader/wx_transfer_dialogs.py
index c209ad5e..c3fc01fa 100644
--- a/src/extra/AudioUploader/wx_transfer_dialogs.py
+++ b/src/extra/AudioUploader/wx_transfer_dialogs.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-from utils import *
+from .utils import *
import widgetUtils
class UploadDialog(widgetUtils.BaseDialog):
diff --git a/src/extra/SoundsTutorial/__init__.py b/src/extra/SoundsTutorial/__init__.py
index 1e2e7e17..20d563a6 100644
--- a/src/extra/SoundsTutorial/__init__.py
+++ b/src/extra/SoundsTutorial/__init__.py
@@ -1 +1,2 @@
-from soundsTutorial import soundsTutorial
+from __future__ import absolute_import
+from .soundsTutorial import soundsTutorial
diff --git a/src/extra/SoundsTutorial/soundsTutorial.py b/src/extra/SoundsTutorial/soundsTutorial.py
index 37d9643a..fd835410 100644
--- a/src/extra/SoundsTutorial/soundsTutorial.py
+++ b/src/extra/SoundsTutorial/soundsTutorial.py
@@ -1,15 +1,16 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import platform
import widgetUtils
import os
import paths
import logging
log = logging.getLogger("extra.SoundsTutorial.soundsTutorial")
-import soundsTutorial_constants
+from . import soundsTutorial_constants
if platform.system() == "Windows":
- import wx_ui as UI
+ from . import wx_ui as UI
elif platform.system() == "Linux":
- import gtk_ui as UI
+ from . import gtk_ui as UI
class soundsTutorial(object):
def __init__(self, sessionObject):
diff --git a/src/extra/SoundsTutorial/soundsTutorial_constants.py b/src/extra/SoundsTutorial/soundsTutorial_constants.py
index ae7cfe63..667e2373 100644
--- a/src/extra/SoundsTutorial/soundsTutorial_constants.py
+++ b/src/extra/SoundsTutorial/soundsTutorial_constants.py
@@ -1,5 +1,7 @@
#-*- coding: utf-8 -*-
-import reverse_sort
+from __future__ import absolute_import
+#-*- coding: utf-8 -*-
+from . import reverse_sort
import application
actions = reverse_sort.reverse_sort([ ("audio", _(u"Audio tweet.")),
("create_timeline", _(u"User timeline buffer created.")),
diff --git a/src/extra/SpellChecker/__init__.py b/src/extra/SpellChecker/__init__.py
index fedad8a8..4edff483 100644
--- a/src/extra/SpellChecker/__init__.py
+++ b/src/extra/SpellChecker/__init__.py
@@ -1,4 +1,5 @@
-import spellchecker
+from __future__ import absolute_import
+from . import spellchecker
import platform
if platform.system() == "Windows":
- from wx_ui import *
\ No newline at end of file
+ from .wx_ui import *
\ No newline at end of file
diff --git a/src/extra/SpellChecker/spellchecker.py b/src/extra/SpellChecker/spellchecker.py
index a40102b5..cb3ce50d 100644
--- a/src/extra/SpellChecker/spellchecker.py
+++ b/src/extra/SpellChecker/spellchecker.py
@@ -1,14 +1,15 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import os
import logging
-import wx_ui
+from . import wx_ui
import widgetUtils
import output
import config
import languageHandler
import enchant
import paths
-import twitterFilter
+from . import twitterFilter
from enchant.checker import SpellChecker
from enchant.errors import DictNotFoundError
from enchant import tokenize
@@ -52,7 +53,7 @@ class spellChecker(object):
def check(self):
try:
- self.checker.next()
+ next(self.checker)
textToSay = _(u"Misspelled word: %s") % (self.checker.word,)
context = u"... %s %s %s" % (self.checker.leading_context(10), self.checker.word, self.checker.trailing_context(10))
self.dialog.set_title(textToSay)
diff --git a/src/extra/autocompletionUsers/__init__.py b/src/extra/autocompletionUsers/__init__.py
index 343ea6c0..888d9511 100644
--- a/src/extra/autocompletionUsers/__init__.py
+++ b/src/extra/autocompletionUsers/__init__.py
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
-import completion, settings
\ No newline at end of file
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import completion, settings
\ No newline at end of file
diff --git a/src/extra/autocompletionUsers/completion.py b/src/extra/autocompletionUsers/completion.py
index f9c9a516..7dedc525 100644
--- a/src/extra/autocompletionUsers/completion.py
+++ b/src/extra/autocompletionUsers/completion.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import output
-import storage
-import wx_menu
+from . import storage
+from . import wx_menu
class autocompletionUsers(object):
def __init__(self, window, session_id):
diff --git a/src/extra/autocompletionUsers/manage.py b/src/extra/autocompletionUsers/manage.py
index 60e34ddc..a42ef607 100644
--- a/src/extra/autocompletionUsers/manage.py
+++ b/src/extra/autocompletionUsers/manage.py
@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
-import storage
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import storage
import widgetUtils
-import wx_manage
+from . import wx_manage
from wxUI import commonMessageDialogs
class autocompletionManage(object):
diff --git a/src/extra/autocompletionUsers/settings.py b/src/extra/autocompletionUsers/settings.py
index 6eb0762d..5b682850 100644
--- a/src/extra/autocompletionUsers/settings.py
+++ b/src/extra/autocompletionUsers/settings.py
@@ -1,8 +1,10 @@
# -*- coding: utf-8 -*-
-import storage
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import storage
import widgetUtils
-import wx_settings
-import manage
+from . import wx_settings
+from . import manage
import output
from mysc.thread_utils import call_threaded
diff --git a/src/extra/ocr/__init__.py b/src/extra/ocr/__init__.py
index d127ddeb..b39f07d2 100644
--- a/src/extra/ocr/__init__.py
+++ b/src/extra/ocr/__init__.py
@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
-import OCRSpace
\ No newline at end of file
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import OCRSpace
\ No newline at end of file
diff --git a/src/extra/translator/__init__.py b/src/extra/translator/__init__.py
index be356d51..9296eede 100644
--- a/src/extra/translator/__init__.py
+++ b/src/extra/translator/__init__.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
-import translator
+from __future__ import absolute_import
+from . import translator
import platform
if platform.system() == "Windows":
- import wx_ui as gui
+ from . import wx_ui as gui
\ No newline at end of file
diff --git a/src/extra/translator/wx_ui.py b/src/extra/translator/wx_ui.py
index a61c9e7e..43b1c684 100644
--- a/src/extra/translator/wx_ui.py
+++ b/src/extra/translator/wx_ui.py
@@ -16,7 +16,26 @@
# along with this program. If not, see .
#
############################################################
-import translator
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+############################################################
+# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+############################################################
+from . import translator
import wx
from wxUI.dialogs import baseDialog
diff --git a/src/fixes/__init__.py b/src/fixes/__init__.py
index 354a5875..c14e4d6d 100644
--- a/src/fixes/__init__.py
+++ b/src/fixes/__init__.py
@@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
""" This module contains some bugfixes for packages used in TWBlue."""
+from __future__ import absolute_import
import sys
-import fix_arrow # A few new locales for Three languages in arrow.
-import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython.
-import fix_win32com
-import fix_requests #fix cacert.pem location for TWBlue binary copies
+from . import fix_arrow # A few new locales for Three languages in arrow.
+from . import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython.
+from . import fix_win32com
+from . import fix_requests #fix cacert.pem location for TWBlue binary copies
def setup():
fix_arrow.fix()
if hasattr(sys, "frozen"):
diff --git a/src/keys/__init__.py b/src/keys/__init__.py
index 69818a83..af724223 100644
--- a/src/keys/__init__.py
+++ b/src/keys/__init__.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from builtins import object
import application
import platform
import exceptions
diff --git a/src/keystrokeEditor/__init__.py b/src/keystrokeEditor/__init__.py
index aef2cc0f..c76ba54e 100644
--- a/src/keystrokeEditor/__init__.py
+++ b/src/keystrokeEditor/__init__.py
@@ -1 +1,2 @@
-from keystrokeEditor import KeystrokeEditor
\ No newline at end of file
+from __future__ import absolute_import
+from .keystrokeEditor import KeystrokeEditor
\ No newline at end of file
diff --git a/src/keystrokeEditor/keystrokeEditor.py b/src/keystrokeEditor/keystrokeEditor.py
index 3f47abbc..c56b4cd0 100644
--- a/src/keystrokeEditor/keystrokeEditor.py
+++ b/src/keystrokeEditor/keystrokeEditor.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import widgetUtils
import config
-import wx_ui
-import constants
+from . import wx_ui
+from . import constants
from pubsub import pub
class KeystrokeEditor(object):
diff --git a/src/keystrokeEditor/wx_ui.py b/src/keystrokeEditor/wx_ui.py
index c8162ffa..dbd922d1 100644
--- a/src/keystrokeEditor/wx_ui.py
+++ b/src/keystrokeEditor/wx_ui.py
@@ -32,7 +32,7 @@ class keystrokeEditorDialog(baseDialog.BaseWXDialog):
selection = self.keys.get_selected()
self.keys.clear()
for i in keystrokes:
- if actions.has_key(i) == False:
+ if (i in actions) == False:
continue
action = actions[i]
self.actions.append(i)
diff --git a/src/multiplatform_widgets/__init__.py b/src/multiplatform_widgets/__init__.py
index 126802d0..b282b4e9 100644
--- a/src/multiplatform_widgets/__init__.py
+++ b/src/multiplatform_widgets/__init__.py
@@ -1 +1,2 @@
-import widgets
\ No newline at end of file
+from __future__ import absolute_import
+from . import widgets
\ No newline at end of file
diff --git a/src/notifier/__init__.py b/src/notifier/__init__.py
index 3bd1ff6e..5eaab0ec 100644
--- a/src/notifier/__init__.py
+++ b/src/notifier/__init__.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
""" A cross platform notification system.
Under Linux, the wx.NotificationMessage does not show a notification on the taskbar, so we decided to use dbus for showing notifications for linux and wx for Windows."""
+from __future__ import absolute_import
import platform
notify = None
@@ -8,10 +9,10 @@ notify = None
def setup():
global notify
if platform.system() == "Windows":
- import windows
+ from . import windows
notify = windows.notification()
elif platform.system() == "Linux":
- import linux
+ from . import linux
notify = linux.notification()
def send(title, text):
diff --git a/src/sessionmanager/sessionManager.py b/src/sessionmanager/sessionManager.py
index caf72820..a3cacd5c 100644
--- a/src/sessionmanager/sessionManager.py
+++ b/src/sessionmanager/sessionManager.py
@@ -1,20 +1,21 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import shutil
import widgetUtils
import platform
import output
if platform.system() == "Windows":
- import wxUI as view
+ from . import wxUI as view
from controller import settings
elif platform.system() == "Linux":
- import gtkUI as view
+ from . import gtkUI as view
import paths
import time
import os
import logging
import sessions
from sessions.twitter import session
-import manager
+from . import manager
import config_utils
import config
@@ -77,7 +78,7 @@ class sessionManagerController(object):
def do_ok(self):
log.debug("Starting sessions...")
for i in self.sessions:
- if sessions.sessions.has_key(i) == True: continue
+ if (i in sessions.sessions) == True: continue
s = session.Session(i)
s.get_configuration()
if i not in config.app["sessions"]["ignored_sessions"]:
diff --git a/src/sessions/base.py b/src/sessions/base.py
index 39f635a7..418f5875 100644
--- a/src/sessions/base.py
+++ b/src/sessions/base.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
""" A base class to be derived in possible new sessions for TWBlue and services."""
+from __future__ import absolute_import
import paths
import output
import time
@@ -9,7 +10,7 @@ import config_utils
import shelve
import application
import os
-import session_exceptions as Exceptions
+from . import session_exceptions as Exceptions
log = logging.getLogger("sessionmanager.session")
class baseSession(object):
diff --git a/src/sessions/twitter/compose.py b/src/sessions/twitter/compose.py
index 79138ee3..554f95de 100644
--- a/src/sessions/twitter/compose.py
+++ b/src/sessions/twitter/compose.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import platform
system = platform.system()
-import utils
+from . import utils
import re
import htmlentitydefs
import time
@@ -10,7 +11,7 @@ import languageHandler
import arrow
import logging
import config
-from long_tweets import twishort, tweets
+from .long_tweets import twishort, tweets
log = logging.getLogger("compose")
def StripChars(s):
@@ -38,13 +39,13 @@ def compose_tweet(tweet, db, relative_times, show_screen_names=False, session=No
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
else:
ts = tweet["created_at"]
- if tweet.has_key("message"):
+ if "message" in tweet:
value = "message"
- elif tweet.has_key("full_text"):
+ elif "full_text" in tweet:
value = "full_text"
else:
value = "text"
- if tweet.has_key("retweeted_status") and value != "message":
+ if "retweeted_status" in tweet and value != "message":
text = StripChars(tweet["retweeted_status"][value])
else:
text = StripChars(tweet[value])
@@ -53,16 +54,16 @@ def compose_tweet(tweet, db, relative_times, show_screen_names=False, session=No
else:
user = tweet["user"]["name"]
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
- if tweet.has_key("retweeted_status"):
- if tweet.has_key("message") == False and tweet["retweeted_status"]["is_quote_status"] == False:
+ if "retweeted_status" in tweet:
+ if ("message" in tweet) == False and tweet["retweeted_status"]["is_quote_status"] == False:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], text)
elif tweet["retweeted_status"]["is_quote_status"]:
text = "%s" % (text)
else:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], text)
- if tweet.has_key("message") == False:
+ if ("message" in tweet) == False:
urls = utils.find_urls_in_text(text)
- if tweet.has_key("retweeted_status"):
+ if "retweeted_status" in tweet:
for url in range(0, len(urls)):
try:
text = text.replace(urls[url], tweet["retweeted_status"]["entities"]["urls"][url]["expanded_url"])
@@ -110,14 +111,14 @@ def compose_direct_message(item, db, relative_times, show_screen_names=False, se
def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False, session=None):
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
- if quoted_tweet.has_key("retweeted_status"):
- if quoted_tweet["retweeted_status"].has_key("full_text"):
+ if "retweeted_status" in quoted_tweet:
+ if "full_text" in quoted_tweet["retweeted_status"]:
value = "full_text"
else:
value = "text"
text = StripChars(quoted_tweet["retweeted_status"][value])
else:
- if quoted_tweet.has_key("full_text"):
+ if "full_text" in quoted_tweet:
value = "full_text"
else:
value = "text"
@@ -127,13 +128,13 @@ def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False,
else:
quoting_user = quoted_tweet["user"]["name"]
source = re.sub(r"(?s)<.*?>", "", quoted_tweet["source"])
- if quoted_tweet.has_key("retweeted_status"):
+ if "retweeted_status" in quoted_tweet:
text = "rt @%s: %s" % (quoted_tweet["retweeted_status"]["user"]["screen_name"], text)
if text[-1] in chars: text=text+"."
original_user = original_tweet["user"]["screen_name"]
- if original_tweet.has_key("message"):
+ if "message" in original_tweet:
original_text = original_tweet["message"]
- elif original_tweet.has_key("full_text"):
+ elif "full_text" in original_tweet:
original_text = StripChars(original_tweet["full_text"])
else:
original_text = StripChars(original_tweet["text"])
@@ -151,7 +152,7 @@ def compose_followers_list(tweet, db, relative_times=True, show_screen_names=Fal
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
else:
ts = tweet["created_at"]
- if tweet.has_key("status"):
+ if "status" in tweet:
if len(tweet["status"]) > 4 and system == "Windows":
original_date2 = arrow.get(tweet["status"]["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
if relative_times:
diff --git a/src/sessions/twitter/long_tweets/tweets.py b/src/sessions/twitter/long_tweets/tweets.py
index 95e6052e..5445f8fa 100644
--- a/src/sessions/twitter/long_tweets/tweets.py
+++ b/src/sessions/twitter/long_tweets/tweets.py
@@ -22,9 +22,9 @@ def is_long(tweet):
""" Check if the passed tweet contains a quote in its metadata.
tweet dict: a tweet dictionary.
returns True if a quote is detected, False otherwise."""
- if tweet.has_key("quoted_status_id") and tweet.has_key("quoted_status"):
+ if "quoted_status_id" in tweet and "quoted_status" in tweet:
return tweet["quoted_status_id"]
- elif tweet.has_key("retweeted_status") and tweet["retweeted_status"].has_key("quoted_status_id") and tweet["retweeted_status"].has_key("quoted_status"):
+ elif "retweeted_status" in tweet and "quoted_status_id" in tweet["retweeted_status"] and "quoted_status" in tweet["retweeted_status"]:
return tweet["retweeted_status"]["quoted_status_id"]
return False
@@ -32,8 +32,8 @@ def clear_url(tweet):
""" Reads data from a quoted tweet and removes the link to the Status from the tweet's text.
tweet dict: a tweet dictionary.
returns a tweet dictionary without the URL to the status ID in its text to display."""
- if tweet.has_key("retweeted_status"):
- if tweet["retweeted_status"].has_key("full_text"):
+ if "retweeted_status" in tweet:
+ if "full_text" in tweet["retweeted_status"]:
value = "full_text"
else:
value = "text"
@@ -41,7 +41,7 @@ def clear_url(tweet):
try: tweet["message"] = tweet["message"].replace(urls[-1], "")
except IndexError: pass
else:
- if tweet.has_key("full_text"):
+ if "full_text" in tweet:
value = "full_text"
else:
value = "text"
diff --git a/src/sessions/twitter/long_tweets/twishort.py b/src/sessions/twitter/long_tweets/twishort.py
index df27ccbc..46481828 100644
--- a/src/sessions/twitter/long_tweets/twishort.py
+++ b/src/sessions/twitter/long_tweets/twishort.py
@@ -16,6 +16,7 @@
# along with this program. If not, see .
#
############################################################
+from __future__ import print_function
import logging
import requests
import keys
@@ -47,7 +48,7 @@ def is_long(tweet):
# see https://github.com/manuelcortez/TWBlue/issues/103
except TypeError:
pass
- if long == False and tweet.has_key("retweeted_status"):
+ if long == False and "retweeted_status" in tweet:
for url in range(0, len(tweet["retweeted_status"]["entities"]["urls"])):
try:
if tweet["retweeted_status"]["entities"]["urls"][url] != None and "twishort.com" in tweet["retweeted_status"]["entities"]["urls"][url]["expanded_url"]:
@@ -97,5 +98,5 @@ def create_tweet(user_token, user_secret, text, media=0):
try:
return response.json()["text_to_tweet"]
except:
- print "There was a problem creating a long tweet"
+ print("There was a problem creating a long tweet")
return 0
\ No newline at end of file
diff --git a/src/sessions/twitter/session.py b/src/sessions/twitter/session.py
index 1a08198e..fbcd429d 100644
--- a/src/sessions/twitter/session.py
+++ b/src/sessions/twitter/session.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
""" This is the main session needed to access all Twitter Features."""
+from __future__ import absolute_import
import os
import time
import logging
@@ -15,7 +16,7 @@ from keys import keyring
from sessions import base
from sessions.twitter import utils, compose
from sessions.twitter.long_tweets import tweets, twishort
-from wxUI import authorisationDialog
+from .wxUI import authorisationDialog
log = logging.getLogger("sessions.twitterSession")
@@ -30,9 +31,9 @@ class Session(base.baseSession):
returns the number of items that have been added in this execution"""
num = 0
last_id = None
- if self.db.has_key(name) == False:
+ if (name in self.db) == False:
self.db[name] = []
- if self.db.has_key("users") == False:
+ if ("users" in self.db) == False:
self.db["users"] = {}
if ignore_older and len(self.db[name]) > 0:
if self.settings["general"]["reverse_timelines"] == False:
@@ -51,8 +52,8 @@ class Session(base.baseSession):
if self.settings["general"]["reverse_timelines"] == False: self.db[name].append(i)
else: self.db[name].insert(0, i)
num = num+1
- if i.has_key("user") == True:
- if self.db["users"].has_key(i["user"]["id"]) == False:
+ if ("user" in i) == True:
+ if (i["user"]["id"] in self.db["users"]) == False:
self.db["users"][i["user"]["id"]] = i["user"]
return num
@@ -66,7 +67,7 @@ class Session(base.baseSession):
if name == "direct_messages":
return self.order_direct_messages(data)
num = 0
- if self.db.has_key(name) == False:
+ if (name in self.db) == False:
self.db[name] = {}
self.db[name]["items"] = []
for i in data:
@@ -82,12 +83,12 @@ class Session(base.baseSession):
returns the number of incoming messages processed in this execution, and sends an event with data regarding amount of sent direct messages added."""
incoming = 0
sent = 0
- if self.db.has_key("direct_messages") == False:
+ if ("direct_messages" in self.db) == False:
self.db["direct_messages"] = {}
self.db["direct_messages"]["items"] = []
for i in data:
if i["message_create"]["sender_id"] == self.db["user_id"]:
- if self.db.has_key("sent_direct_messages") and utils.find_item(i["id"], self.db["sent_direct_messages"]["items"]) == None:
+ if "sent_direct_messages" in self.db and utils.find_item(i["id"], self.db["sent_direct_messages"]["items"]) == None:
if self.settings["general"]["reverse_timelines"] == False: self.db["sent_direct_messages"]["items"].append(i)
else: self.db["sent_direct_messages"]["items"].insert(0, i)
sent = sent+1
@@ -164,13 +165,13 @@ class Session(base.baseSession):
users, dm bool: If any of these is set to True, the function will treat items as users or dm (they need different handling).
name str: name of the database item to put new element in."""
results = []
- if kwargs.has_key("cursor") and kwargs["cursor"] == 0:
+ if "cursor" in kwargs and kwargs["cursor"] == 0:
output.speak(_(u"There are no more items to retrieve in this buffer."))
return
data = getattr(self.twitter, update_function)(*args, **kwargs)
if users == True:
- if type(data) == dict and data.has_key("next_cursor"):
- if data.has_key("next_cursor"): # There are more objects to retrieve.
+ if type(data) == dict and "next_cursor" in data:
+ if "next_cursor" in data: # There are more objects to retrieve.
self.db[name]["cursor"] = data["next_cursor"]
else: # Set cursor to 0, wich means no more items available.
self.db[name]["cursor"] = 0
@@ -178,7 +179,7 @@ class Session(base.baseSession):
elif type(data) == list:
results.extend(data[1:])
elif dm == True:
- if data.has_key("next_cursor"): # There are more objects to retrieve.
+ if "next_cursor" in data: # There are more objects to retrieve.
self.db[name]["cursor"] = data["next_cursor"]
else: # Set cursor to 0, wich means no more items available.
self.db[name]["cursor"] = 0
@@ -289,7 +290,7 @@ class Session(base.baseSession):
name str: Name to save items to the database.
function str: A function to get the items."""
last_id = -1
- if self.db.has_key(name):
+ if name in self.db:
try:
if self.db[name][0]["id"] > self.db[name][-1]["id"]:
last_id = self.db[name][0]["id"]
@@ -309,7 +310,7 @@ class Session(base.baseSession):
returns number of items retrieved."""
items_ = []
try:
- if self.db[name].has_key("cursor") and get_previous:
+ if "cursor" in self.db[name] and get_previous:
cursor = self.db[name]["cursor"]
else:
cursor = -1
@@ -322,7 +323,7 @@ class Session(base.baseSession):
tl[items].reverse()
num = self.order_cursored_buffer(name, tl[items])
# Recently, Twitter's new endpoints have cursor if there are more results.
- if tl.has_key("next_cursor"):
+ if "next_cursor" in tl:
self.db[name]["cursor"] = tl["next_cursor"]
else:
self.db[name]["cursor"] = 0
@@ -352,7 +353,7 @@ class Session(base.baseSession):
def get_quoted_tweet(self, tweet):
""" Process a tweet and extract all information related to the quote."""
quoted_tweet = tweet
- if tweet.has_key("full_text"):
+ if "full_text" in tweet:
value = "full_text"
else:
value = "text"
@@ -360,16 +361,16 @@ class Session(base.baseSession):
for url in range(0, len(urls)):
try: quoted_tweet[value] = quoted_tweet[value].replace(urls[url], quoted_tweet["entities"]["urls"][url]["expanded_url"])
except IndexError: pass
- if quoted_tweet.has_key("quoted_status"):
+ if "quoted_status" in quoted_tweet:
original_tweet = quoted_tweet["quoted_status"]
- elif quoted_tweet.has_key("retweeted_status") and quoted_tweet["retweeted_status"].has_key("quoted_status"):
+ elif "retweeted_status" in quoted_tweet and "quoted_status" in quoted_tweet["retweeted_status"]:
original_tweet = quoted_tweet["retweeted_status"]["quoted_status"]
else:
return quoted_tweet
original_tweet = self.check_long_tweet(original_tweet)
- if original_tweet.has_key("full_text"):
+ if "full_text" in original_tweet:
value = "full_text"
- elif original_tweet.has_key("message"):
+ elif "message" in original_tweet:
value = "message"
else:
value = "text"
@@ -386,13 +387,13 @@ class Session(base.baseSession):
long = twishort.is_long(tweet)
if long != False and config.app["app-settings"]["handle_longtweets"]:
message = twishort.get_full_text(long)
- if tweet.has_key("quoted_status"):
+ if "quoted_status" in tweet:
tweet["quoted_status"]["message"] = message
if tweet["quoted_status"]["message"] == False: return False
tweet["quoted_status"]["twishort"] = True
for i in tweet["quoted_status"]["entities"]["user_mentions"]:
if "@%s" % (i["screen_name"]) not in tweet["quoted_status"]["message"] and i["screen_name"] != tweet["user"]["screen_name"]:
- if tweet["quoted_status"].has_key("retweeted_status") and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
+ if "retweeted_status" in tweet["quoted_status"] and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
continue
tweet["quoted_status"]["message"] = u"@%s %s" % (i["screen_name"], tweet["message"])
else:
@@ -401,7 +402,7 @@ class Session(base.baseSession):
tweet["twishort"] = True
for i in tweet["entities"]["user_mentions"]:
if "@%s" % (i["screen_name"]) not in tweet["message"] and i["screen_name"] != tweet["user"]["screen_name"]:
- if tweet.has_key("retweeted_status") and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
+ if "retweeted_status" in tweet and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
continue
return tweet
@@ -409,7 +410,7 @@ class Session(base.baseSession):
""" Returns an user object associated with an ID.
id str: User identifier, provided by Twitter.
returns an user dict."""
- if self.db.has_key("users") == False or self.db["users"].has_key(id) == False:
+ if ("users" in self.db) == False or (id in self.db["users"]) == False:
user = self.twitter.show_user(id=id)
self.db["users"][user["id_str"]] = user
return user
@@ -420,7 +421,7 @@ class Session(base.baseSession):
""" Returns an user identifier associated with a screen_name.
screen_name str: User name, such as tw_blue2, provided by Twitter.
returns an user ID."""
- if self.db.has_key("users") == False:
+ if ("users" in self.db) == False:
user = utils.if_user_exists(self.twitter, screen_name)
self.db["users"][user["id_str"]] = user
return user["id_str"]
diff --git a/src/sessions/twitter/utils.py b/src/sessions/twitter/utils.py
index cf1886fa..2c22ced4 100644
--- a/src/sessions/twitter/utils.py
+++ b/src/sessions/twitter/utils.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from __future__ import print_function
import url_shortener, re
import output
from twython import TwythonError
@@ -24,32 +25,32 @@ def find_urls_in_text(text):
def find_urls (tweet):
urls = []
# Let's add URLS from tweet entities.
- if tweet.has_key("message_create"):
+ if "message_create" in tweet:
entities = tweet["message_create"]["message_data"]["entities"]
else:
entities = tweet["entities"]
for i in entities["urls"]:
if i["expanded_url"] not in urls:
urls.append(i["expanded_url"])
- if tweet.has_key("quoted_status"):
+ if "quoted_status" in tweet:
for i in tweet["quoted_status"]["entities"]["urls"]:
if i["expanded_url"] not in urls:
urls.append(i["expanded_url"])
- if tweet.has_key("retweeted_status"):
+ if "retweeted_status" in tweet:
for i in tweet["retweeted_status"]["entities"]["urls"]:
if i["expanded_url"] not in urls:
urls.append(i["expanded_url"])
- if tweet["retweeted_status"].has_key("quoted_status"):
+ if "quoted_status" in tweet["retweeted_status"]:
for i in tweet["retweeted_status"]["quoted_status"]["entities"]["urls"]:
if i["expanded_url"] not in urls:
urls.append(i["expanded_url"])
- if tweet.has_key("message"):
+ if "message" in tweet:
i = "message"
- elif tweet.has_key("full_text"):
+ elif "full_text" in tweet:
i = "full_text"
else:
i = "text"
- if tweet.has_key("message_create"):
+ if "message_create" in tweet:
extracted_urls = find_urls_in_text(tweet["message_create"]["message_data"]["text"])
else:
extracted_urls = find_urls_in_text(tweet[i])
@@ -82,7 +83,7 @@ def is_audio(tweet):
try:
if len(find_urls(tweet)) < 1:
return False
- if tweet.has_key("message_create"):
+ if "message_create" in tweet:
entities = tweet["message_create"]["message_data"]["entities"]
else:
entities = tweet["entities"]
@@ -91,22 +92,22 @@ def is_audio(tweet):
if i["text"] == "audio":
return True
except IndexError:
- print tweet["entities"]["hashtags"]
+ print(tweet["entities"]["hashtags"])
log.exception("Exception while executing is_audio hashtag algorithm")
def is_geocoded(tweet):
- if tweet.has_key("coordinates") and tweet["coordinates"] != None:
+ if "coordinates" in tweet and tweet["coordinates"] != None:
return True
def is_media(tweet):
- if tweet.has_key("message_create"):
+ if "message_create" in tweet:
entities = tweet["message_create"]["message_data"]["entities"]
else:
entities = tweet["entities"]
- if entities.has_key("media") == False:
+ if ("media" in entities) == False:
return False
for i in entities["media"]:
- if i.has_key("type") and i["type"] == "photo":
+ if "type" in i and i["type"] == "photo":
return True
return False
@@ -121,10 +122,10 @@ def get_all_mentioned(tweet, conf, field="screen_name"):
def get_all_users(tweet, conf):
string = []
- if tweet.has_key("retweeted_status"):
+ if "retweeted_status" in tweet:
string.append(tweet["user"]["screen_name"])
tweet = tweet["retweeted_status"]
- if tweet.has_key("sender"):
+ if "sender" in tweet:
string.append(tweet["sender"]["screen_name"])
else:
if tweet["user"]["screen_name"] != conf["user_name"]:
@@ -161,16 +162,16 @@ def api_call(parent=None, call_name=None, preexec_message="", success="", succes
def is_allowed(tweet, settings, buffer_name):
clients = settings["twitter"]["ignored_clients"]
- if tweet.has_key("sender"): return True
+ if "sender" in tweet: return True
allowed = True
tweet_data = {}
- if tweet.has_key("retweeted_status"):
+ if "retweeted_status" in tweet:
tweet_data["retweet"] = True
if tweet["in_reply_to_status_id_str"] != None:
tweet_data["reply"] = True
- if tweet.has_key("quoted_status"):
+ if "quoted_status" in tweet:
tweet_data["quote"] = True
- if tweet.has_key("retweeted_status"): tweet = tweet["retweeted_status"]
+ if "retweeted_status" in tweet: tweet = tweet["retweeted_status"]
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
for i in clients:
if i.lower() == source.lower():
@@ -178,7 +179,7 @@ def is_allowed(tweet, settings, buffer_name):
return filter_tweet(tweet, tweet_data, settings, buffer_name)
def filter_tweet(tweet, tweet_data, settings, buffer_name):
- if tweet.has_key("full_text"):
+ if "full_text" in tweet:
value = "full_text"
else:
value = "text"
@@ -187,23 +188,23 @@ def filter_tweet(tweet, tweet_data, settings, buffer_name):
regexp = settings["filters"][i]["regexp"]
word = settings["filters"][i]["word"]
# Added if/else for compatibility reasons.
- if settings["filters"][i].has_key("allow_rts"):
+ if "allow_rts" in settings["filters"][i]:
allow_rts = settings["filters"][i]["allow_rts"]
else:
allow_rts = "True"
- if settings["filters"][i].has_key("allow_quotes"):
+ if "allow_quotes" in settings["filters"][i]:
allow_quotes = settings["filters"][i]["allow_quotes"]
else:
allow_quotes = "True"
- if settings["filters"][i].has_key("allow_replies"):
+ if "allow_replies" in settings["filters"][i]:
allow_replies = settings["filters"][i]["allow_replies"]
else:
allow_replies = "True"
- if allow_rts == "False" and tweet_data.has_key("retweet"):
+ if allow_rts == "False" and "retweet" in tweet_data:
return False
- if allow_quotes == "False" and tweet_data.has_key("quote"):
+ if allow_quotes == "False" and "quote" in tweet_data:
return False
- if allow_replies == "False" and tweet_data.has_key("reply"):
+ if allow_replies == "False" and "reply" in tweet_data:
return False
if word != "" and settings["filters"][i]["if_word_exists"]:
if word in tweet[value]:
diff --git a/src/update/updater.py b/src/update/updater.py
index 2384f968..5b19da2d 100644
--- a/src/update/updater.py
+++ b/src/update/updater.py
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import application
-import update
+from . import update
import platform
import logging
import output
from requests.exceptions import ConnectionError
-from wxUpdater import *
+from .wxUpdater import *
logger = logging.getLogger("updater")
def do_update(endpoint=application.update_url):
diff --git a/src/update/wxUpdater.py b/src/update/wxUpdater.py
index 761d620a..b3f3f34e 100644
--- a/src/update/wxUpdater.py
+++ b/src/update/wxUpdater.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
import application
-import utils
+from . import utils
progress_dialog = None
diff --git a/src/widgetUtils/__init__.py b/src/widgetUtils/__init__.py
index 30509ef6..0a15dadd 100644
--- a/src/widgetUtils/__init__.py
+++ b/src/widgetUtils/__init__.py
@@ -1,5 +1,6 @@
+from __future__ import absolute_import
import platform
if platform.system() == "Windows":
- from wxUtils import *
+ from .wxUtils import *
#elif platform.system() == "Linux":
# from gtkUtils import *
diff --git a/src/wxUI/buffers/__init__.py b/src/wxUI/buffers/__init__.py
index 2380f3a9..d62019d7 100644
--- a/src/wxUI/buffers/__init__.py
+++ b/src/wxUI/buffers/__init__.py
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
-from base import basePanel
-from dm import dmPanel
-from events import eventsPanel
-from favourites import favsPanel
-from lists import listPanel
-from panels import accountPanel, emptyPanel
-from people import peoplePanel
-from trends import trendsPanel
-from tweet_searches import searchPanel
-from user_searches import searchUsersPanel
\ No newline at end of file
+from __future__ import absolute_import
+from .base import basePanel
+from .dm import dmPanel
+from .events import eventsPanel
+from .favourites import favsPanel
+from .lists import listPanel
+from .panels import accountPanel, emptyPanel
+from .people import peoplePanel
+from .trends import trendsPanel
+from .tweet_searches import searchPanel
+from .user_searches import searchUsersPanel
\ No newline at end of file
diff --git a/src/wxUI/buffers/dm.py b/src/wxUI/buffers/dm.py
index db95aae0..774433ed 100644
--- a/src/wxUI/buffers/dm.py
+++ b/src/wxUI/buffers/dm.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-from base import basePanel
+from .base import basePanel
class dmPanel(basePanel):
def __init__(self, parent, name):
diff --git a/src/wxUI/buffers/favourites.py b/src/wxUI/buffers/favourites.py
index 4837dd6f..5dd91a05 100644
--- a/src/wxUI/buffers/favourites.py
+++ b/src/wxUI/buffers/favourites.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-from base import basePanel
+from .base import basePanel
class favsPanel(basePanel):
def __init__(self, parent, name):
diff --git a/src/wxUI/buffers/lists.py b/src/wxUI/buffers/lists.py
index 82ca73bc..baf6c95a 100644
--- a/src/wxUI/buffers/lists.py
+++ b/src/wxUI/buffers/lists.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-from base import basePanel
+from .base import basePanel
class listPanel(basePanel):
def __init__(self, parent, name):
diff --git a/src/wxUI/buffers/people.py b/src/wxUI/buffers/people.py
index f887ba4d..47e5cf17 100644
--- a/src/wxUI/buffers/people.py
+++ b/src/wxUI/buffers/people.py
@@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
from multiplatform_widgets import widgets
-from base import basePanel
+from .base import basePanel
class peoplePanel(basePanel):
""" Buffer used to show people."""
diff --git a/src/wxUI/buffers/tweet_searches.py b/src/wxUI/buffers/tweet_searches.py
index 28cf974e..ad0c7aa0 100644
--- a/src/wxUI/buffers/tweet_searches.py
+++ b/src/wxUI/buffers/tweet_searches.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-from base import basePanel
+from .base import basePanel
class searchPanel(basePanel):
def __init__(self, parent, name):
diff --git a/src/wxUI/buffers/user_searches.py b/src/wxUI/buffers/user_searches.py
index b3b1415c..c1ff9745 100644
--- a/src/wxUI/buffers/user_searches.py
+++ b/src/wxUI/buffers/user_searches.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-from tweet_searches import searchPanel
+from .tweet_searches import searchPanel
from multiplatform_widgets import widgets
class searchUsersPanel(searchPanel):
diff --git a/src/wxUI/dialogs/__init__.py b/src/wxUI/dialogs/__init__.py
index a9c57be2..3605a2d1 100644
--- a/src/wxUI/dialogs/__init__.py
+++ b/src/wxUI/dialogs/__init__.py
@@ -1 +1,2 @@
-import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils, filterDialogs
+from __future__ import absolute_import
+from . import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils, filterDialogs
diff --git a/src/wxUI/dialogs/configuration.py b/src/wxUI/dialogs/configuration.py
index 3e7e5ff9..dcafb0ec 100644
--- a/src/wxUI/dialogs/configuration.py
+++ b/src/wxUI/dialogs/configuration.py
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import logging as original_logger
import wx
import application
import output
import config
import widgetUtils
-import baseDialog
+from . import baseDialog
from multiplatform_widgets import widgets
class general(wx.Panel, baseDialog.BaseWXDialog):
diff --git a/src/wxUI/dialogs/filterDialogs.py b/src/wxUI/dialogs/filterDialogs.py
index 6430df19..608ec2c8 100644
--- a/src/wxUI/dialogs/filterDialogs.py
+++ b/src/wxUI/dialogs/filterDialogs.py
@@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
-import baseDialog
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import baseDialog
import wx
import widgetUtils
from multiplatform_widgets import widgets
diff --git a/src/wxUI/dialogs/find.py b/src/wxUI/dialogs/find.py
index 48396295..0b18ea20 100644
--- a/src/wxUI/dialogs/find.py
+++ b/src/wxUI/dialogs/find.py
@@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
-import baseDialog
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import baseDialog
import wx
class findDialog(baseDialog.BaseWXDialog):
diff --git a/src/wxUI/dialogs/search.py b/src/wxUI/dialogs/search.py
index 12849117..34992613 100644
--- a/src/wxUI/dialogs/search.py
+++ b/src/wxUI/dialogs/search.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import widgetUtils
-import baseDialog
+from . import baseDialog
import wx
from extra import translator
diff --git a/src/wxUI/dialogs/show_user.py b/src/wxUI/dialogs/show_user.py
index 74b02070..2fb8d4ca 100644
--- a/src/wxUI/dialogs/show_user.py
+++ b/src/wxUI/dialogs/show_user.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-import baseDialog
+from . import baseDialog
class showUserProfile(baseDialog.BaseWXDialog):
def __init__(self):
diff --git a/src/wxUI/dialogs/trends.py b/src/wxUI/dialogs/trends.py
index 6cf973f6..fa591b36 100644
--- a/src/wxUI/dialogs/trends.py
+++ b/src/wxUI/dialogs/trends.py
@@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
-import baseDialog
+from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from . import baseDialog
import wx
class trendingTopicsDialog(baseDialog.BaseWXDialog):
diff --git a/src/wxUI/dialogs/update_profile.py b/src/wxUI/dialogs/update_profile.py
index d9286516..ea248bc3 100644
--- a/src/wxUI/dialogs/update_profile.py
+++ b/src/wxUI/dialogs/update_profile.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import absolute_import
import wx
-import baseDialog
+from . import baseDialog
class updateProfileDialog(baseDialog.BaseWXDialog):
def __init__(self):
diff --git a/src/wxUI/dialogs/utils.py b/src/wxUI/dialogs/utils.py
index fbc1be23..0adb20ca 100644
--- a/src/wxUI/dialogs/utils.py
+++ b/src/wxUI/dialogs/utils.py
@@ -16,8 +16,9 @@
# along with this program. If not, see .
#
############################################################
+from __future__ import absolute_import
import wx
-import baseDialog
+from . import baseDialog
class selectUserDialog(baseDialog.BaseWXDialog):
def __init__(self, title, users):