PEP8 style fixes and other small style fixes
I used autopep8 on some files and did carefully check the changes. I ignored E501,E302,E231,E225,E222,E221,E241,E203 in my search, and at least E501 on any autopep8 run. Other style fixes not related to PEP8: * Only use new-style classes. I don't think the usage of old-style classes was voluntary. Old-style classes are removed in Python 3. * Convert an if/else to a one-liner in mediawiki, change docstring style change to a comment something that wasn't really appropriate for a docstring. * Unneeded first if condition in meteofrance
This commit is contained in:
parent
1e000acf3a
commit
006e97a8be
99 changed files with 441 additions and 350 deletions
|
|
@ -24,7 +24,7 @@ import Image
|
|||
|
||||
class CaptchaError(Exception): pass
|
||||
|
||||
class Tile:
|
||||
class Tile(object):
|
||||
hash = {
|
||||
'bc8d52d96058478a6def26226145d53b': 'A',
|
||||
'c62ecdfddb72b2feaed96cd9fe7c2802': 'A',
|
||||
|
|
@ -111,7 +111,7 @@ class Tile:
|
|||
print 'hash: %s' % checksum
|
||||
raise CaptchaError()
|
||||
|
||||
class Captcha:
|
||||
class Captcha(object):
|
||||
def __init__(self, f):
|
||||
self.img = Image.open(f)
|
||||
self.w, self.h = self.img.size
|
||||
|
|
@ -152,7 +152,7 @@ class Captcha:
|
|||
s += tile.letter
|
||||
return s
|
||||
|
||||
class Decoder:
|
||||
class Decoder(object):
|
||||
def __init__(self):
|
||||
self.hash = {}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ from weboob.tools.ordereddict import OrderedDict
|
|||
from weboob.capabilities.contact import Contact as _Contact, ProfileNode
|
||||
from weboob.tools.misc import html2text
|
||||
|
||||
class FieldBase:
|
||||
|
||||
class FieldBase(object):
|
||||
def __init__(self, key, key2=None):
|
||||
self.key = key
|
||||
self.key2 = key2
|
||||
|
|
@ -34,18 +35,22 @@ class FieldBase:
|
|||
def get_value(self, value, consts):
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
class FieldStr(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
return html2text(unicode(profile[self.key])).strip()
|
||||
|
||||
|
||||
class FieldBool(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
return bool(int(profile[self.key]))
|
||||
|
||||
|
||||
class FieldDist(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
return '%.2f km' % float(profile[self.key])
|
||||
|
||||
|
||||
class FieldIP(FieldBase):
|
||||
def get_hostname(self, s):
|
||||
try:
|
||||
|
|
@ -59,6 +64,7 @@ class FieldIP(FieldBase):
|
|||
s += ' (first %s)' % self.get_hostname(profile[self.key2])
|
||||
return s
|
||||
|
||||
|
||||
class FieldProfileURL(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
id = int(profile[self.key])
|
||||
|
|
@ -67,10 +73,12 @@ class FieldProfileURL(FieldBase):
|
|||
else:
|
||||
return ''
|
||||
|
||||
|
||||
class FieldPopu(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
return unicode(profile['popu'][self.key])
|
||||
|
||||
|
||||
class FieldPopuRatio(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
v1 = float(profile['popu'][self.key])
|
||||
|
|
@ -80,15 +88,18 @@ class FieldPopuRatio(FieldBase):
|
|||
else:
|
||||
return '%.2f' % (v1 / v2)
|
||||
|
||||
|
||||
class FieldOld(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
birthday = parse_dt(profile[self.key])
|
||||
return int((datetime.now() - birthday).days / 365.25)
|
||||
|
||||
|
||||
class FieldSplit(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
return [html2text(s).strip() for s in profile[self.key].split(self.key2) if len(s.strip()) > 0]
|
||||
|
||||
|
||||
class FieldBMI(FieldBase):
|
||||
def __init__(self, key, key2, fat=False):
|
||||
FieldBase.__init__(self, key, key2)
|
||||
|
|
@ -100,7 +111,7 @@ class FieldBMI(FieldBase):
|
|||
if height == 0 or weight == 0:
|
||||
return ''
|
||||
|
||||
bmi = (weight/float(pow(height/100.0, 2)))
|
||||
bmi = (weight / float(pow(height / 100.0, 2)))
|
||||
if not self.fat:
|
||||
return bmi
|
||||
elif bmi < 15.5:
|
||||
|
|
@ -114,6 +125,7 @@ class FieldBMI(FieldBase):
|
|||
else:
|
||||
return 'obese'
|
||||
|
||||
|
||||
class FieldFlags(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
i = int(profile[self.key])
|
||||
|
|
@ -123,6 +135,7 @@ class FieldFlags(FieldBase):
|
|||
labels.append(html2text(d['label']).strip())
|
||||
return labels
|
||||
|
||||
|
||||
class FieldList(FieldBase):
|
||||
def get_value(self, profile, consts):
|
||||
i = int(profile[self.key])
|
||||
|
|
@ -131,6 +144,7 @@ class FieldList(FieldBase):
|
|||
return html2text(d['label']).strip()
|
||||
return ''
|
||||
|
||||
|
||||
class Contact(_Contact):
|
||||
TABLE = OrderedDict((
|
||||
('_info', OrderedDict((
|
||||
|
|
@ -247,9 +261,9 @@ class Contact(_Contact):
|
|||
if node.flags & node.SECTION:
|
||||
result += u'\t' * level + node.label + '\n'
|
||||
for sub in node.value.itervalues():
|
||||
result += print_node(sub, level+1)
|
||||
result += print_node(sub, level + 1)
|
||||
else:
|
||||
if isinstance(node.value, (tuple,list)):
|
||||
if isinstance(node.value, (tuple, list)):
|
||||
value = ', '.join(unicode(v) for v in node.value)
|
||||
elif isinstance(node.value, float):
|
||||
value = '%.2f' % node.value
|
||||
|
|
|
|||
|
|
@ -124,9 +124,9 @@ class PriorityConnection(Optimization):
|
|||
browser = AuMBrowser('%s@%s' % (name, self.config['domain']), proxy=self.browser.proxy)
|
||||
try:
|
||||
browser.register(password= password,
|
||||
sex= 1, #slut
|
||||
birthday_d= random.randint(1,28),
|
||||
birthday_m= random.randint(1,12),
|
||||
sex= 1, # slut
|
||||
birthday_d= random.randint(1, 28),
|
||||
birthday_m= random.randint(1, 12),
|
||||
birthday_y= random.randint(1975, 1990),
|
||||
zipcode= 75001,
|
||||
country= 'fr',
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class ProfilesWalker(Optimization):
|
|||
|
||||
def start(self):
|
||||
self.walk_cron = self.sched.repeat(60, self.enqueue_profiles)
|
||||
self.view_cron = self.sched.schedule(randint(10,40), self.view_profile)
|
||||
self.view_cron = self.sched.schedule(randint(10, 40), self.view_profile)
|
||||
return True
|
||||
|
||||
def stop(self):
|
||||
|
|
@ -101,4 +101,4 @@ class ProfilesWalker(Optimization):
|
|||
print e
|
||||
finally:
|
||||
if self.view_cron is not None:
|
||||
self.view_cron = self.sched.schedule(randint(10,40), self.view_profile)
|
||||
self.view_cron = self.sched.schedule(randint(10, 40), self.view_profile)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ from weboob.tools.test import BackendTest
|
|||
from weboob.tools.browser import BrowserUnavailable
|
||||
|
||||
|
||||
|
||||
__all__ = ['AuMTest']
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ from weboob.tools.capabilities.gallery.genericcomicreader import GenericComicRea
|
|||
|
||||
__all__ = ['BatotoBackend']
|
||||
|
||||
|
||||
class BatotoBackend(GenericComicReaderBackend):
|
||||
NAME = 'batoto'
|
||||
DESCRIPTION = 'Batoto manga reading website'
|
||||
|
|
@ -31,4 +32,4 @@ class BatotoBackend(GenericComicReaderBackend):
|
|||
ID_REGEXP = r'[^/]+/[^/]+'
|
||||
URL_REGEXP = r'.+batoto.(?:com|net)/read/_/(%s).+' % ID_REGEXP
|
||||
ID_TO_URL = 'http://www.batoto.net/read/_/%s'
|
||||
PAGES = { URL_REGEXP: DisplayPage }
|
||||
PAGES = {URL_REGEXP: DisplayPage}
|
||||
|
|
|
|||
|
|
@ -19,8 +19,9 @@
|
|||
|
||||
from weboob.tools.capabilities.gallery.genericcomicreader import GenericComicReaderTest
|
||||
|
||||
|
||||
class BatotoTest(GenericComicReaderTest):
|
||||
BACKEND = 'batoto'
|
||||
|
||||
def test_download(self):
|
||||
return self._test_download('26287/yurumates_ch4_by_primitive-scans')
|
||||
|
||||
|
|
|
|||
|
|
@ -70,4 +70,3 @@ class BoursoramaBackend(BaseBackend, ICapBank):
|
|||
with self.browser:
|
||||
for coming in self.browser.get_coming_operations(account):
|
||||
yield coming
|
||||
|
||||
|
|
|
|||
|
|
@ -84,11 +84,11 @@ class Boursorama(BaseBrowser):
|
|||
self.location(account._link_id)
|
||||
operations = self.page.get_operations()
|
||||
# load last month as well
|
||||
target = date.today() - relativedelta( months = 1 )
|
||||
target = date.today() - relativedelta(months=1)
|
||||
self.location(account._link_id + ("&month=%d&year=%d" % (target.month, target.year)))
|
||||
operations += self.page.get_operations()
|
||||
# and the month before, just in case you're greedy
|
||||
target = date.today() - relativedelta( months = 2 )
|
||||
target = date.today() - relativedelta(months=2)
|
||||
self.location(account._link_id + ("&month=%d&year=%d" % (target.month, target.year)))
|
||||
operations += self.page.get_operations()
|
||||
for index, op in enumerate(operations):
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ from .account_history import AccountHistory
|
|||
from .accounts_list import AccountsList
|
||||
from .login import LoginPage
|
||||
|
||||
class AccountPrelevement(AccountsList): pass
|
||||
class AccountPrelevement(AccountsList):
|
||||
pass
|
||||
|
||||
__all__ = ['LoginPage',
|
||||
'AccountsList',
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
from weboob.capabilities.bank import Account
|
||||
from weboob.tools.browser import BasePage
|
||||
|
||||
class AccountsList(BasePage):
|
||||
|
||||
class AccountsList(BasePage):
|
||||
def on_loaded(self):
|
||||
pass
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ class AccountsList(BasePage):
|
|||
balance = td.text
|
||||
else:
|
||||
balance = span.text
|
||||
balance = balance.strip(u' \n\t€+').replace(',','.').replace(' ','')
|
||||
balance = balance.strip(u' \n\t€+').replace(',', '.').replace(' ', '')
|
||||
if balance != "":
|
||||
account.balance = float(balance)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class AccountHistory(BasePage):
|
|||
for t in tmp:
|
||||
if r.search(t.text):
|
||||
amount = t.text
|
||||
amount = ''.join( amount.replace('.', '').replace(',', '.').split() )
|
||||
amount = ''.join(amount.replace('.', '').replace(',', '.').split())
|
||||
if amount[0] == "-":
|
||||
operation.amount = -float(amount[1:])
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ __all__ = ['CanalplusVideo']
|
|||
|
||||
class CanalplusVideo(BaseVideo):
|
||||
swf_player = False
|
||||
|
||||
@classmethod
|
||||
def id2url(cls, _id):
|
||||
return 'http://service.canal-plus.com/video/rest/getVideosLiees/cplus/%s' % _id
|
||||
|
|
|
|||
|
|
@ -33,8 +33,10 @@ from lxml import etree
|
|||
from datetime import date
|
||||
from StringIO import StringIO
|
||||
|
||||
|
||||
__all__ = ['CmbBackend']
|
||||
|
||||
|
||||
class CmbBackend(BaseBackend, ICapBank):
|
||||
NAME = 'cmb'
|
||||
MAINTAINER = 'Johann Broudin'
|
||||
|
|
@ -83,7 +85,6 @@ class CmbBackend(BaseBackend, ICapBank):
|
|||
)
|
||||
]
|
||||
|
||||
|
||||
cookie = None
|
||||
headers = {
|
||||
'User-Agent':
|
||||
|
|
@ -167,13 +168,13 @@ class CmbBackend(BaseBackend, ICapBank):
|
|||
|
||||
|
||||
balance = td[1].text
|
||||
balance = balance.replace(',','.').replace(u"\xa0",'')
|
||||
balance = balance.replace(',', '.').replace(u"\xa0", '')
|
||||
account.balance = float(balance)
|
||||
|
||||
span = td[3].xpath('a/span')
|
||||
if len(span):
|
||||
coming = span[0].text.replace(' ','').replace(',','.')
|
||||
coming = coming.replace(u"\xa0",'')
|
||||
coming = span[0].text.replace(' ', '').replace(',', '.')
|
||||
coming = coming.replace(u"\xa0", '')
|
||||
account.coming = float(coming)
|
||||
else:
|
||||
account.coming = NotAvailable
|
||||
|
|
@ -248,7 +249,7 @@ class CmbBackend(BaseBackend, ICapBank):
|
|||
operation.date = date(*reversed([int(x) for x in d]))
|
||||
|
||||
div = td[2].xpath('div')
|
||||
label = div[0].xpath('a')[0].text.replace('\n','')
|
||||
label = div[0].xpath('a')[0].text.replace('\n', '')
|
||||
operation.raw = unicode(' '.join(label.split()))
|
||||
for pattern, _type, _label in self.LABEL_PATTERNS:
|
||||
mm = pattern.match(operation.raw)
|
||||
|
|
@ -260,12 +261,11 @@ class CmbBackend(BaseBackend, ICapBank):
|
|||
amount = td[3].text
|
||||
if amount.count(',') != 1:
|
||||
amount = td[4].text
|
||||
amount = amount.replace(',','.').replace(u'\xa0','')
|
||||
amount = amount.replace(',', '.').replace(u'\xa0', '')
|
||||
operation.amount = float(amount)
|
||||
else:
|
||||
amount = amount.replace(',','.').replace(u'\xa0','')
|
||||
amount = amount.replace(',', '.').replace(u'\xa0', '')
|
||||
operation.amount = - float(amount)
|
||||
|
||||
i += 1
|
||||
yield operation
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ from weboob.capabilities.bank import Account
|
|||
from .base import CragrBasePage
|
||||
from weboob.capabilities.bank import Transaction
|
||||
|
||||
|
||||
def clean_amount(amount):
|
||||
"""
|
||||
Removes weird characters and converts to a float
|
||||
|
|
@ -34,6 +35,7 @@ def clean_amount(amount):
|
|||
matches = re.findall('^(-?[0-9]+\.[0-9]{2}).*$', data)
|
||||
return float(matches[0]) if (matches) else 0.0
|
||||
|
||||
|
||||
class AccountsList(CragrBasePage):
|
||||
|
||||
def get_list(self):
|
||||
|
|
@ -212,7 +214,7 @@ class AccountsList(CragrBasePage):
|
|||
year = today.year
|
||||
return date(year, month, day)
|
||||
|
||||
def get_history(self, start_index = 0, start_offset = 0):
|
||||
def get_history(self, start_index=0, start_offset=0):
|
||||
"""
|
||||
Returns the history of a specific account. Note that this function
|
||||
expects the current page to be the one dedicated to this history.
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ from .pages import LoginPage, LoginErrorPage, AccountsPage, UserSpacePage, Opera
|
|||
|
||||
__all__ = ['CreditMutuelBrowser']
|
||||
|
||||
|
||||
# Browser
|
||||
class CreditMutuelBrowser(BaseBrowser):
|
||||
PROTOCOL = 'https'
|
||||
|
|
@ -36,11 +37,11 @@ class CreditMutuelBrowser(BaseBrowser):
|
|||
'https://www.creditmutuel.fr/groupe/fr/identification/default.cgi': LoginErrorPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/situation_financiere.cgi': AccountsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/espace_personnel.aspx': UserSpacePage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/mouvements.cgi.*' : OperationsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/nr/nr_devbooster.aspx.*' : OperationsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/operations_carte\.cgi.*' : OperationsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/BAD.*' : InfoPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/.*Vir.*' : TransfertPage
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/mouvements.cgi.*': OperationsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/nr/nr_devbooster.aspx.*': OperationsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/operations_carte\.cgi.*': OperationsPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/BAD.*': InfoPage,
|
||||
'https://www.creditmutuel.fr/.*/fr/banque/.*Vir.*': TransfertPage
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
|
@ -61,17 +62,17 @@ class CreditMutuelBrowser(BaseBrowser):
|
|||
if not self.is_on_page(LoginPage):
|
||||
self.location('https://www.creditmutuel.fr/', no_login=True)
|
||||
|
||||
self.page.login( self.username, self.password)
|
||||
self.page.login(self.username, self.password)
|
||||
|
||||
if not self.is_logged() or self.is_on_page(LoginErrorPage):
|
||||
raise BrowserIncorrectPassword()
|
||||
|
||||
self.SUB_BANKS = ['cmdv','cmcee','cmse', 'cmidf', 'cmsmb', 'cmma', 'cmmabn', 'cmc', 'cmlaco', 'cmnormandie', 'cmm']
|
||||
self.SUB_BANKS = ['cmdv', 'cmcee', 'cmse', 'cmidf', 'cmsmb', 'cmma', 'cmmabn', 'cmc', 'cmlaco', 'cmnormandie', 'cmm']
|
||||
self.getCurrentSubBank()
|
||||
|
||||
def get_accounts_list(self):
|
||||
if not self.is_on_page(AccountsPage):
|
||||
self.location('https://www.creditmutuel.fr/%s/fr/banque/situation_financiere.cgi'%self.currentSubBank)
|
||||
self.location('https://www.creditmutuel.fr/%s/fr/banque/situation_financiere.cgi' % self.currentSubBank)
|
||||
return self.page.get_list()
|
||||
|
||||
def get_account(self, id):
|
||||
|
|
@ -121,13 +122,13 @@ class CreditMutuelBrowser(BaseBrowser):
|
|||
def transfer(self, account, to, amount, reason=None):
|
||||
# access the transfer page
|
||||
transfert_url = 'WI_VPLV_VirUniSaiCpt.asp?RAZ=ALL&Cat=6&PERM=N&CHX=A'
|
||||
self.location('https://%s/%s/fr/banque/%s'%(self.DOMAIN, self.currentSubBank, transfert_url))
|
||||
self.location('https://%s/%s/fr/banque/%s' % (self.DOMAIN, self.currentSubBank, transfert_url))
|
||||
|
||||
# fill the form
|
||||
self.select_form(name='FormVirUniSaiCpt')
|
||||
self['IDB'] = [account[-1]]
|
||||
self['ICR'] = [to[-1]]
|
||||
self['MTTVIR'] = '%s' % str(amount).replace('.',',')
|
||||
self['MTTVIR'] = '%s' % str(amount).replace('.', ',')
|
||||
if reason != None:
|
||||
self['LIBDBT'] = reason
|
||||
self['LIBCRT'] = reason
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue