From d61e15cf8452ce5beb3e576cd318a2d4818d7305 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Tue, 7 Oct 2014 00:23:18 +0200 Subject: [PATCH] rename things related to browsers weboob.tools.browser -> weboob.deprecated.browser weboob.tools.parsers -> weboob.deprecated.browser.parsers weboob.tools.mech -> weboob.deprecated.mech weboob.browser2 -> weboob.browser weboob.core.exceptions -> weboob.exceptions Also, the new tree for browser2 is: weboob.browser: import weboob.browser.browsers.* and weboob.browser.url.* weboob.browser.browsers: all browsers (including PagesBrowser and LoginBrowser) weboob.browser.url: the URL class weboob.browser.profiles: all Profile classes weboob.browser.sessions: WeboobSession and FuturesSession weboob.browser.cookies: that's a cookies thing weboob.browser.pages: all Page and derivated classes, and Form class weboob.browser.exceptions: specific browser exceptions weboob.browser.elements: AbstractElement classes, and 'method' decorator weboob.browser.filters.*: all filters --- contrib/boobot.py | 2 +- docs/source/guides/module.rst | 41 +- modules/750g/browser.py | 2 +- modules/750g/pages.py | 2 +- modules/adecco/browser.py | 4 +- modules/adecco/pages.py | 2 +- modules/agendadulibre/browser.py | 2 +- modules/agendadulibre/pages.py | 8 +- modules/allocine/browser.py | 2 +- modules/alloresto/browser.py | 4 +- modules/alloresto/pages.py | 6 +- modules/allrecipes/browser.py | 2 +- modules/allrecipes/pages.py | 2 +- modules/ameli/browser.py | 2 +- modules/ameli/pages.py | 2 +- modules/amelipro/browser.py | 2 +- modules/amelipro/pages.py | 2 +- modules/americanexpress/browser.py | 2 +- modules/americanexpress/pages.py | 2 +- modules/apec/browser.py | 4 +- modules/apec/pages.py | 2 +- modules/apivie/browser.py | 2 +- modules/apivie/pages.py | 2 +- modules/arretsurimages/browser.py | 4 +- modules/arretsurimages/pages.py | 2 +- modules/arte/browser.py | 4 +- modules/arte/pages.py | 2 +- modules/attilasub/browser.py | 2 +- modules/attilasub/pages.py | 2 +- modules/audioaddict/module.py | 2 +- modules/aum/browser.py | 7 +- modules/aum/module.py | 2 +- modules/aum/optim/profiles_walker.py | 2 +- modules/aum/optim/queries_queue.py | 2 +- modules/aum/optim/visibility.py | 2 +- modules/aum/test.py | 2 +- modules/axabanque/browser.py | 2 +- modules/axabanque/pages.py | 2 +- modules/banqueaccord/browser.py | 4 +- modules/banqueaccord/pages.py | 10 +- modules/banquepopulaire/browser.py | 2 +- modules/banquepopulaire/pages.py | 2 +- modules/barclays/browser.py | 2 +- modules/barclays/pages.py | 2 +- modules/biplan/browser.py | 2 +- modules/biplan/pages.py | 8 +- modules/bnporc/browser.py | 2 +- modules/bnporc/enterprise/browser.py | 2 +- modules/bnporc/enterprise/pages.py | 2 +- modules/bnporc/perso/accounts_list.py | 2 +- modules/bnporc/perso/login.py | 2 +- modules/bnporc/perso/messages.py | 2 +- modules/bnporc/perso/transactions.py | 2 +- modules/bnporc/perso/transfer.py | 2 +- modules/bnporc/pro.py | 2 +- modules/boursorama/browser.py | 2 +- modules/boursorama/pages/account_history.py | 2 +- modules/boursorama/pages/accounts_list.py | 2 +- modules/boursorama/pages/card_history.py | 2 +- modules/boursorama/pages/login.py | 2 +- .../boursorama/pages/two_authentication.py | 2 +- modules/bouygues/browser.py | 2 +- modules/bouygues/pages/compose.py | 2 +- modules/bouygues/pages/login.py | 2 +- modules/bp/browser.py | 2 +- modules/bp/pages/accounthistory.py | 2 +- modules/bp/pages/accountlist.py | 2 +- modules/bp/pages/login.py | 2 +- modules/bp/pages/transfer.py | 2 +- modules/bred/browser.py | 2 +- modules/bred/pages.py | 4 +- modules/btdigg/browser.py | 2 +- modules/btdigg/pages/index.py | 2 +- modules/btdigg/pages/torrents.py | 2 +- modules/btmon/browser.py | 2 +- modules/btmon/pages.py | 2 +- modules/caissedepargne/browser.py | 2 +- modules/caissedepargne/pages.py | 6 +- modules/canalplus/browser.py | 4 +- modules/canalplus/pages.py | 2 +- modules/canaltp/browser.py | 4 +- modules/cappedtv/browser.py | 8 +- modules/carrefourbanque/browser.py | 4 +- modules/carrefourbanque/pages.py | 8 +- modules/cci/browser.py | 2 +- modules/cci/pages.py | 8 +- modules/champslibres/browser.py | 2 +- modules/champslibres/pages.py | 4 +- modules/chronopost/browser.py | 2 +- modules/chronopost/pages.py | 2 +- modules/cic/browser.py | 2 +- modules/cic/pages.py | 2 +- modules/citelis/browser.py | 2 +- modules/citelis/pages.py | 2 +- modules/cmb/module.py | 4 +- modules/cmso/browser.py | 2 +- modules/cmso/pages.py | 2 +- modules/colisprive/browser.py | 2 +- modules/colisprive/pages.py | 2 +- modules/colissimo/browser.py | 2 +- modules/cragr/mobile/browser.py | 2 +- modules/cragr/mobile/pages/base.py | 4 +- modules/cragr/mobile/pages/login.py | 2 +- modules/cragr/web/browser.py | 2 +- modules/cragr/web/pages.py | 2 +- modules/creditcooperatif/perso/browser.py | 2 +- modules/creditcooperatif/perso/pages.py | 2 +- modules/creditcooperatif/pro/browser.py | 2 +- modules/creditcooperatif/pro/pages.py | 2 +- modules/creditdunord/browser.py | 2 +- modules/creditdunord/pages.py | 2 +- modules/creditmutuel/browser.py | 6 +- modules/creditmutuel/pages.py | 10 +- modules/cuisineaz/browser.py | 2 +- modules/cuisineaz/pages.py | 2 +- modules/dailymotion/browser.py | 4 +- modules/dailymotion/pages.py | 2 +- modules/delubac/browser.py | 2 +- modules/delubac/pages.py | 2 +- modules/dlfp/browser.py | 2 +- modules/dlfp/module.py | 2 +- modules/dlfp/pages/board.py | 2 +- modules/dlfp/pages/index.py | 2 +- modules/dlfp/pages/news.py | 2 +- modules/dlfp/pages/wiki.py | 2 +- modules/dresdenwetter/browser.py | 2 +- modules/dresdenwetter/pages.py | 6 +- modules/ebonics/module.py | 2 +- modules/edf/browser.py | 2 +- modules/edf/pages.py | 2 +- modules/ehentai/browser.py | 2 +- modules/ehentai/pages.py | 2 +- modules/europarl/browser.py | 4 +- modules/europarl/pages.py | 6 +- modules/feedly/browser.py | 2 +- modules/feedly/google.py | 5 +- modules/feedly/pages.py | 10 +- modules/fortuneo/browser.py | 2 +- modules/fortuneo/pages/accounts_list.py | 2 +- modules/fortuneo/pages/login.py | 2 +- modules/fourchan/browser.py | 2 +- modules/fourchan/pages/board.py | 2 +- modules/francetelevisions/browser.py | 2 +- modules/francetelevisions/pages.py | 10 +- modules/freemobile/browser.py | 4 +- modules/freemobile/pages/history.py | 10 +- modules/freemobile/pages/homepage.py | 7 +- modules/freemobile/pages/login.py | 2 +- modules/ganassurances/browser.py | 2 +- modules/ganassurances/pages.py | 2 +- modules/gazelle/browser.py | 2 +- modules/gazelle/pages/base.py | 2 +- modules/gazelle/pages/index.py | 2 +- modules/gdcvault/browser.py | 4 +- modules/gdcvault/pages.py | 4 +- modules/gdfsuez/browser.py | 2 +- modules/gdfsuez/pages/history.py | 2 +- modules/gdfsuez/pages/homepage.py | 2 +- modules/geolocip/module.py | 2 +- modules/github/browser.py | 2 +- modules/googletranslate/browser.py | 2 +- modules/googletranslate/pages.py | 2 +- modules/grooveshark/browser.py | 2 +- modules/groupamaes/browser.py | 4 +- modules/groupamaes/pages.py | 6 +- modules/guerrillamail/browser.py | 4 +- modules/hds/browser.py | 2 +- modules/hds/pages.py | 2 +- modules/hellobank/browser.py | 2 +- modules/hellobank/perso/accounts_list.py | 2 +- modules/hellobank/perso/login.py | 2 +- modules/hellobank/perso/messages.py | 2 +- modules/hellobank/perso/transactions.py | 2 +- modules/hellobank/perso/transfer.py | 2 +- modules/hsbc/browser.py | 4 +- modules/hsbc/pages.py | 10 +- modules/hybride/browser.py | 3 +- modules/hybride/pages.py | 10 +- modules/imdb/browser.py | 2 +- modules/imdb/pages.py | 2 +- modules/imgur/module.py | 2 +- modules/ina/browser.py | 4 +- modules/ina/pages/search.py | 2 +- modules/ina/pages/video.py | 2 +- modules/indeed/browser.py | 2 +- modules/indeed/pages.py | 8 +- modules/ing/browser.py | 4 +- modules/ing/pages/accounts_list.py | 8 +- modules/ing/pages/bills.py | 9 +- modules/ing/pages/login.py | 4 +- modules/ing/pages/titre.py | 6 +- modules/ing/pages/transfer.py | 8 +- modules/inrocks/browser.py | 2 +- modules/inrocks/pages/article.py | 2 +- modules/ipinfodb/module.py | 2 +- modules/izneo/module.py | 2 +- modules/jacquieetmichel/browser.py | 4 +- modules/jacquieetmichel/pages.py | 2 +- modules/jcvelaux/browser.py | 2 +- modules/jvmalin/browser.py | 2 +- modules/jvmalin/pages.py | 4 +- modules/kickass/browser.py | 2 +- modules/kickass/pages.py | 2 +- modules/lacentrale/browser.py | 2 +- modules/lacentrale/pages.py | 2 +- modules/lcl/browser.py | 2 +- modules/lcl/enterprise/browser.py | 2 +- modules/lcl/enterprise/pages.py | 2 +- modules/lcl/pages.py | 2 +- modules/leboncoin/browser.py | 2 +- modules/leboncoin/pages.py | 8 +- modules/leclercmobile/browser.py | 2 +- modules/leclercmobile/pages/history.py | 2 +- modules/leclercmobile/pages/homepage.py | 2 +- modules/leclercmobile/pages/login.py | 4 +- modules/lefigaro/browser.py | 2 +- modules/liberation/browser.py | 2 +- modules/lolix/browser.py | 4 +- modules/lolix/pages.py | 2 +- modules/lutim/browser.py | 2 +- modules/lutim/pages.py | 2 +- modules/mailinator/browser.py | 4 +- modules/mareeinfo/browser.py | 2 +- modules/mareeinfo/pages.py | 8 +- modules/marmiton/browser.py | 2 +- modules/marmiton/pages.py | 2 +- modules/mediawiki/browser.py | 2 +- modules/meteofrance/browser.py | 2 +- modules/meteofrance/pages/meteo.py | 2 +- modules/minutes20/browser.py | 2 +- modules/monster/browser.py | 4 +- modules/monster/pages.py | 2 +- modules/nectarine/browser.py | 2 +- modules/nectarine/pages.py | 2 +- modules/nettokom/browser.py | 2 +- modules/nettokom/pages/history.py | 2 +- modules/nettokom/pages/homepage.py | 2 +- modules/nettokom/pages/login.py | 2 +- modules/nihonnooto/browser.py | 2 +- modules/nihonnooto/pages.py | 2 +- modules/nolifetv/browser.py | 4 +- modules/nolifetv/pages.py | 2 +- modules/nova/module.py | 4 +- modules/okc/browser.py | 2 +- modules/okc/optim/profiles_walker.py | 2 +- modules/okc/pages.py | 2 +- modules/oney/browser.py | 4 +- modules/oney/pages.py | 8 +- modules/opacwebaloes/browser.py | 2 +- modules/opacwebaloes/pages.py | 4 +- modules/opensubtitles/browser.py | 2 +- modules/opensubtitles/pages.py | 2 +- modules/orange/browser.py | 2 +- modules/orange/pages/compose.py | 2 +- modules/orange/pages/login.py | 2 +- modules/ouifm/module.py | 2 +- modules/ovs/browser.py | 4 +- modules/ovs/module.py | 2 +- modules/ovs/pages.py | 2 +- modules/pap/browser.py | 2 +- modules/pap/pages.py | 2 +- modules/pariskiwi/browser.py | 2 +- modules/pariskiwi/pages.py | 2 +- modules/parolesmania/browser.py | 2 +- modules/parolesmania/pages.py | 2 +- modules/parolesmusique/browser.py | 2 +- modules/parolesmusique/pages.py | 2 +- modules/parolesnet/browser.py | 2 +- modules/parolesnet/pages.py | 2 +- modules/pastealacon/browser.py | 10 +- modules/pastebin/browser.py | 12 +- modules/paypal/browser.py | 2 +- modules/paypal/pages.py | 4 +- modules/phpbb/browser.py | 2 +- modules/phpbb/pages/forum.py | 2 +- modules/phpbb/pages/index.py | 2 +- modules/piratebay/browser.py | 2 +- modules/piratebay/pages/index.py | 2 +- modules/piratebay/pages/torrents.py | 2 +- modules/pixtoilelibre/browser.py | 2 +- modules/pixtoilelibre/pages.py | 2 +- modules/podnapisi/browser.py | 2 +- modules/podnapisi/pages.py | 2 +- modules/poivy/browser.py | 4 +- modules/poivy/pages.py | 10 +- modules/popolemploi/browser.py | 4 +- modules/popolemploi/pages.py | 2 +- modules/presseurop/browser.py | 2 +- modules/prixcarburants/browser.py | 2 +- modules/prixcarburants/pages.py | 2 +- modules/radiofrance/browser.py | 4 +- modules/razibus/browser.py | 2 +- modules/razibus/pages.py | 8 +- modules/redmine/browser.py | 2 +- modules/redmine/module.py | 2 +- modules/redmine/pages/index.py | 2 +- modules/redmine/pages/issues.py | 4 +- modules/redmine/pages/wiki.py | 2 +- modules/regionsjob/browser.py | 2 +- modules/regionsjob/pages.py | 8 +- modules/sachsen/browser.py | 2 +- modules/sachsen/pages.py | 8 +- modules/seeklyrics/browser.py | 2 +- modules/seeklyrics/pages.py | 2 +- modules/seloger/browser.py | 2 +- modules/seloger/pages.py | 2 +- modules/senscritique/browser.py | 3 +- modules/senscritique/pages.py | 8 +- modules/sfr/browser.py | 2 +- modules/sfr/pages/compose.py | 2 +- modules/sfr/pages/login.py | 2 +- modules/societegenerale/browser.py | 2 +- .../societegenerale/pages/accounts_list.py | 2 +- modules/societegenerale/pages/base.py | 2 +- modules/societegenerale/pages/login.py | 4 +- modules/societegenerale/sgpe/browser.py | 2 +- modules/societegenerale/sgpe/pages.py | 4 +- modules/somafm/module.py | 4 +- modules/sueurdemetal/browser.py | 2 +- modules/sueurdemetal/pages.py | 2 +- modules/supertoinette/browser.py | 2 +- modules/supertoinette/pages.py | 2 +- modules/taz/browser.py | 2 +- modules/tinder/browser.py | 6 +- modules/transilien/browser.py | 2 +- modules/transilien/pages.py | 10 +- modules/trictractv/browser.py | 4 +- modules/trictractv/pages.py | 2 +- modules/tvsubtitles/browser.py | 2 +- modules/tvsubtitles/pages.py | 2 +- modules/twitter/browser.py | 4 +- modules/twitter/module.py | 2 +- modules/twitter/pages.py | 8 +- modules/unsee/browser.py | 4 +- modules/ups/browser.py | 2 +- modules/ups/pages.py | 2 +- modules/vimeo/browser.py | 4 +- modules/vimeo/pages.py | 10 +- modules/vlille/browser.py | 2 +- modules/vlille/pages.py | 6 +- modules/voyagessncf/browser.py | 2 +- modules/voyagessncf/pages.py | 4 +- modules/weather/browser.py | 2 +- modules/weather/pages.py | 2 +- modules/wellsfargo/browser.py | 4 +- modules/wellsfargo/pages.py | 2 +- modules/wordreference/browser.py | 2 +- modules/wordreference/pages.py | 2 +- modules/yahoo/module.py | 2 +- modules/youjizz/browser.py | 2 +- modules/youjizz/pages/index.py | 9 +- modules/youjizz/pages/video.py | 6 +- modules/youporn/browser.py | 4 +- modules/youporn/pages/base.py | 4 +- modules/youporn/pages/video.py | 2 +- modules/youtube/browser.py | 2 +- modules/youtube/pages.py | 2 +- setup.cfg | 2 +- tools/boilerplate_data/base_browser.py | 2 +- tools/boilerplate_data/base_pages.py | 2 +- tools/certhash.py | 2 +- weboob/{browser2 => browser}/__init__.py | 10 +- .../browser.py => browser/browsers.py} | 260 +++++-- weboob/{browser2 => browser}/cookies.py | 0 weboob/{browser2 => browser}/elements.py | 14 +- weboob/{browser2 => browser}/exceptions.py | 2 +- .../{browser2 => browser}/filters/__init__.py | 0 weboob/{browser2 => browser}/filters/html.py | 0 .../filters/javascript.py | 4 +- weboob/{browser2 => browser}/filters/json.py | 0 .../{browser2 => browser}/filters/standard.py | 6 +- weboob/browser/pages.py | 344 +++++++++ weboob/browser/profiles.py | 95 +++ weboob/{browser2 => browser}/sessions.py | 5 +- weboob/browser/url.py | 205 +++++ weboob/browser2/page.py | 716 ------------------ weboob/core/repositories.py | 5 +- weboob/deprecated/__init__.py | 0 .../{tools => deprecated}/browser/__init__.py | 2 +- .../{tools => deprecated}/browser/browser.py | 10 +- .../browser/decorators.py | 0 .../browser/firefox_cookies.py | 0 .../browser}/parsers/__init__.py | 0 .../browser}/parsers/csvparser.py | 0 .../browser}/parsers/iparser.py | 0 .../browser}/parsers/jsonparser.py | 0 .../browser}/parsers/lxmlparser.py | 2 +- .../browser}/parsers/lxmlsoupparser.py | 0 weboob/{tools => deprecated}/mech.py | 0 weboob/{core => }/exceptions.py | 0 weboob/tools/application/base.py | 2 +- weboob/tools/application/console.py | 2 +- weboob/tools/application/qt/qt.py | 2 +- .../tools/capabilities/bank/transactions.py | 6 +- .../gallery/genericcomicreader.py | 2 +- .../capabilities/messages/genericArticle.py | 4 +- 396 files changed, 1442 insertions(+), 1382 deletions(-) rename weboob/{browser2 => browser}/__init__.py (61%) rename weboob/{browser2/browser.py => browser/browsers.py} (75%) rename weboob/{browser2 => browser}/cookies.py (100%) rename weboob/{browser2 => browser}/elements.py (97%) rename weboob/{browser2 => browser}/exceptions.py (92%) rename weboob/{browser2 => browser}/filters/__init__.py (100%) rename weboob/{browser2 => browser}/filters/html.py (100%) rename weboob/{browser2 => browser}/filters/javascript.py (97%) rename weboob/{browser2 => browser}/filters/json.py (100%) rename weboob/{browser2 => browser}/filters/standard.py (99%) create mode 100644 weboob/browser/pages.py create mode 100644 weboob/browser/profiles.py rename weboob/{browser2 => browser}/sessions.py (99%) create mode 100644 weboob/browser/url.py delete mode 100644 weboob/browser2/page.py create mode 100644 weboob/deprecated/__init__.py rename weboob/{tools => deprecated}/browser/__init__.py (93%) rename weboob/{tools => deprecated}/browser/browser.py (98%) rename weboob/{tools => deprecated}/browser/decorators.py (100%) rename weboob/{tools => deprecated}/browser/firefox_cookies.py (100%) rename weboob/{tools => deprecated/browser}/parsers/__init__.py (100%) rename weboob/{tools => deprecated/browser}/parsers/csvparser.py (100%) rename weboob/{tools => deprecated/browser}/parsers/iparser.py (100%) rename weboob/{tools => deprecated/browser}/parsers/jsonparser.py (100%) rename weboob/{tools => deprecated/browser}/parsers/lxmlparser.py (97%) rename weboob/{tools => deprecated/browser}/parsers/lxmlsoupparser.py (100%) rename weboob/{tools => deprecated}/mech.py (100%) rename weboob/{core => }/exceptions.py (100%) diff --git a/contrib/boobot.py b/contrib/boobot.py index f01de7e337..b6e48dec32 100755 --- a/contrib/boobot.py +++ b/contrib/boobot.py @@ -38,7 +38,7 @@ from mechanize._html import EncodingFinder from weboob.core import Weboob -from weboob.tools.browser import StandardBrowser, BrowserUnavailable +from weboob.deprecated.browser import StandardBrowser, BrowserUnavailable from weboob.tools.misc import get_backtrace from weboob.tools.misc import to_unicode from weboob.tools.storage import StandardStorage diff --git a/docs/source/guides/module.rst b/docs/source/guides/module.rst index a26e919190..7e53787627 100644 --- a/docs/source/guides/module.rst +++ b/docs/source/guides/module.rst @@ -65,7 +65,7 @@ In a module directory, there are commonly these files: * **__init__.py** - needed in every python modules, it exports your :class:`Module ` class. * **module.py** - defines the main class of your module, which derives :class:`Module `. -* **browser.py** - your browser, derived from :class:`Browser `, is called by your module to interact with the supported website. +* **browser.py** - your browser, derived from :class:`Browser `, is called by your module to interact with the supported website. * **pages.py** - all website's pages handled by the browser are defined here * **test.py** - functional tests * **favicon.png** - a 64x64 transparent PNG icon @@ -179,14 +179,14 @@ what are expected returned objects, and what exceptions it may raises. Browser ******* -Most of modules use a class derived from :class:`PagesBrowser ` or -:class:`LoginBrowser ` (for authenticated websites) to interact with a website. +Most of modules use a class derived from :class:`PagesBrowser ` or +:class:`LoginBrowser ` (for authenticated websites) to interact with a website. Edit ``browser.py``:: # -*- coding: utf-8 -*- - from weboob.browser2 import PagesBrowser + from weboob.browser import PagesBrowser __all__ = ['ExampleBrowser'] @@ -195,7 +195,7 @@ Edit ``browser.py``:: There are several possible class attributes: -* **BASEURL** - base url of website used for absolute paths given to :class:`open() ` or :class:`location() ` +* **BASEURL** - base url of website used for absolute paths given to :class:`open() ` or :class:`location() ` * **PROFILE** - defines the behavior of your browser against the website. By default this is Firefox, but you can import other profiles * **TIMEOUT** - defines the timeout for requests (defaults to 10 seconds) * **VERIFY** - SSL verification (if the protocol used is **https**) @@ -205,15 +205,16 @@ Pages For each page you want to handle, you have to create an associated class derived from one of these classes: -* :class:`HTMLPage ` - a HTML page -* :class:`XMLPage ` - a XML document -* :class:`JsonPage ` - a Json object +* :class:`HTMLPage ` - a HTML page +* :class:`XMLPage ` - a XML document +* :class:`JsonPage ` - a Json object +* :class:`CsvPage ` - a CSV table In the file ``pages.py``, you can write, for example:: # -*- coding: utf-8 -*- - from weboob.browser2.page import HTMLPage + from weboob.browser.pages import HTMLPage __all__ = ['IndexPage', 'ListPage'] @@ -227,9 +228,9 @@ In the file ``pages.py``, you can write, for example:: ``IndexPage`` is the class we will use to get information from the home page of the website, and ``ListPage`` will handle pages which list accounts. -Then, you have to declare them in your browser, with the :class:`URL ` object:: +Then, you have to declare them in your browser, with the :class:`URL ` object:: - from weboob.browser2.page import PagesBrowser, URL + from weboob.browser import PagesBrowser, URL from .pages import IndexPage, ListPage # ... @@ -257,9 +258,9 @@ For example, we can now implement some methods in ``ExampleBrowser``:: return self.page.iter_accounts() -When calling the :func:`go() ` method, it reads the first regexp url of our :class:`URL ` object, and go on the page. +When calling the :func:`go() ` method, it reads the first regexp url of our :class:`URL ` object, and go on the page. -:func:`stay_or_go() ` is used when you want to relocate on the page only if we aren't already on it. +:func:`stay_or_go() ` is used when you want to relocate on the page only if we aren't already on it. Once we are on the ``ListPage``, we can call every methods of the ``page`` object. @@ -295,8 +296,8 @@ the method :func:`create_default_browser ` and to implement the function -:func:`do_login `:: +On the browser side, you need to inherit from :func:`LoginBrowser ` and to implement the function +:func:`do_login `:: class ExampleBrowser(LoginBrowser): login = URL('/login', LoginPage) @@ -319,7 +320,7 @@ Also, your ``LoginPage`` may look like:: form['password'] = password form.submit() -Then, each method on your browser which need your user to be authenticated may be decorated by :func:`need_login `:: +Then, each method on your browser which need your user to be authenticated may be decorated by :func:`need_login `:: class ExampleBrowser(LoginBrowser): accounts = URL('/accounts$', ListPage) @@ -329,9 +330,9 @@ Then, each method on your browser which need your user to be authenticated may b self.accounts.stay_or_go() return self.page.get_accounts() -The last thing to know is that :func:`need_login ` checks if the current page is a logged one by -reading the attribute :func:`logged ` of the instance. You can either define it yourself, as a -class boolean attribute or as a property, or to inherit your class from :class:`LoggedPage `. +The last thing to know is that :func:`need_login ` checks if the current page is a logged one by +reading the attribute :func:`logged ` of the instance. You can either define it yourself, as a +class boolean attribute or as a property, or to inherit your class from :class:`LoggedPage `. Parsing of pages @@ -342,7 +343,7 @@ Parsing of pages When your browser locates on a page, an instance of the class related to the -:class:`URL ` attribute which matches the url +:class:`URL ` attribute which matches the url is created. You can declare methods on your class to allow your browser to interact with it. diff --git a/modules/750g/browser.py b/modules/750g/browser.py index eeaff1166f..400db737c7 100644 --- a/modules/750g/browser.py +++ b/modules/750g/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import RecipePage, ResultsPage diff --git a/modules/750g/pages.py b/modules/750g/pages.py index ea69ee4589..c29b0536fd 100644 --- a/modules/750g/pages.py +++ b/modules/750g/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.recipe import Recipe, Comment from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ResultsPage(Page): diff --git a/modules/adecco/browser.py b/modules/adecco/browser.py index 40d19fd39d..f2d1141494 100644 --- a/modules/adecco/browser.py +++ b/modules/adecco/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser.decorators import id2url -from weboob.tools.browser import Browser +from weboob.deprecated.browser.decorators import id2url +from weboob.deprecated.browser import Browser from .job import AdeccoJobAdvert from .pages import SearchPage, AdvertPage import urllib diff --git a/modules/adecco/pages.py b/modules/adecco/pages.py index 353e387e2a..5cda47b833 100644 --- a/modules/adecco/pages.py +++ b/modules/adecco/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.html import html2text from .job import AdeccoJobAdvert import datetime diff --git a/modules/agendadulibre/browser.py b/modules/agendadulibre/browser.py index ef119687ef..e7c979b771 100644 --- a/modules/agendadulibre/browser.py +++ b/modules/agendadulibre/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import EventListPage, EventPage from datetime import timedelta, date diff --git a/modules/agendadulibre/pages.py b/modules/agendadulibre/pages.py index 51f297e27d..45fc402499 100644 --- a/modules/agendadulibre/pages.py +++ b/modules/agendadulibre/pages.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method, pagination -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.filters.standard import Regexp, CleanText, DateTime, Filter, Type, Env, Format, CombineDate -from weboob.browser2.filters.html import Link, XPath, CleanHTML +from weboob.browser.pages import HTMLPage, pagination +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.filters.standard import Regexp, CleanText, DateTime, Filter, Type, Env, Format, CombineDate +from weboob.browser.filters.html import Link, XPath, CleanHTML from .calendar import AgendaDuLibreCalendarEvent from datetime import time, datetime, date diff --git a/modules/allocine/browser.py b/modules/allocine/browser.py index de40b7bad0..12235949d6 100644 --- a/modules/allocine/browser.py +++ b/modules/allocine/browser.py @@ -20,7 +20,7 @@ from weboob.capabilities.base import NotAvailable, NotLoaded from weboob.capabilities.cinema import Movie, Person -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.tools.json import json import base64 import hashlib diff --git a/modules/alloresto/browser.py b/modules/alloresto/browser.py index 0c0872f9d6..a6ec0a4515 100644 --- a/modules/alloresto/browser.py +++ b/modules/alloresto/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword from .pages import LoginPage, AccountsPage diff --git a/modules/alloresto/pages.py b/modules/alloresto/pages.py index a8b74acbaa..5a53999490 100644 --- a/modules/alloresto/pages.py +++ b/modules/alloresto/pages.py @@ -21,9 +21,9 @@ import datetime from decimal import Decimal -from weboob.browser2.page import HTMLPage, LoggedPage, method -from weboob.browser2.elements import ItemElement -from weboob.browser2.filters.standard import CleanDecimal, CleanText, Filter, TableCell +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import ItemElement, method +from weboob.browser.filters.standard import CleanDecimal, CleanText, Filter, TableCell from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction diff --git a/modules/allrecipes/browser.py b/modules/allrecipes/browser.py index e4141c3689..d45e643353 100644 --- a/modules/allrecipes/browser.py +++ b/modules/allrecipes/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import RecipePage, ResultsPage, FourOFourPage diff --git a/modules/allrecipes/pages.py b/modules/allrecipes/pages.py index d33684ec0e..5060f431c9 100644 --- a/modules/allrecipes/pages.py +++ b/modules/allrecipes/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.recipe import Recipe from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class FourOFourPage(Page): diff --git a/modules/ameli/browser.py b/modules/ameli/browser.py index a8db710123..256e54cd70 100644 --- a/modules/ameli/browser.py +++ b/modules/ameli/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.capabilities.bill import Detail from decimal import Decimal from .pages import LoginPage, HomePage, AccountPage, LastPaymentsPage, PaymentDetailsPage, BillsPage diff --git a/modules/ameli/pages.py b/modules/ameli/pages.py index cc31a003f9..8abd1c4a5f 100644 --- a/modules/ameli/pages.py +++ b/modules/ameli/pages.py @@ -22,7 +22,7 @@ import re import urllib from decimal import Decimal -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.capabilities.bill import Subscription, Detail, Bill diff --git a/modules/amelipro/browser.py b/modules/amelipro/browser.py index 028777b2f7..2bcdb5b7fd 100644 --- a/modules/amelipro/browser.py +++ b/modules/amelipro/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.capabilities.bill import Detail from decimal import Decimal from .pages import LoginPage, HomePage, AccountPage, HistoryPage, BillsPage diff --git a/modules/amelipro/pages.py b/modules/amelipro/pages.py index 1057624eda..3e0cf9e4bf 100644 --- a/modules/amelipro/pages.py +++ b/modules/amelipro/pages.py @@ -22,7 +22,7 @@ from decimal import Decimal import re import urllib -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bill import Subscription, Detail, Bill diff --git a/modules/americanexpress/browser.py b/modules/americanexpress/browser.py index aacf1994f9..2fc95ccb26 100644 --- a/modules/americanexpress/browser.py +++ b/modules/americanexpress/browser.py @@ -20,7 +20,7 @@ from urlparse import urlsplit, parse_qsl -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, TransactionsPage diff --git a/modules/americanexpress/pages.py b/modules/americanexpress/pages.py index 3012ec5a3c..35e939ec12 100644 --- a/modules/americanexpress/pages.py +++ b/modules/americanexpress/pages.py @@ -22,7 +22,7 @@ from decimal import Decimal import re -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.capabilities.bank import Account from weboob.capabilities import NotAvailable from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction diff --git a/modules/apec/browser.py b/modules/apec/browser.py index 0cc8bd736e..6451443261 100644 --- a/modules/apec/browser.py +++ b/modules/apec/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser.decorators import id2url -from weboob.tools.browser import Browser +from weboob.deprecated.browser.decorators import id2url +from weboob.deprecated.browser import Browser import urllib from .pages import SearchPage, AdvertPage from .job import ApecJobAdvert diff --git a/modules/apec/pages.py b/modules/apec/pages.py index ea71a9a50d..c8c3a29579 100644 --- a/modules/apec/pages.py +++ b/modules/apec/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.html import html2text import dateutil.parser import re diff --git a/modules/apivie/browser.py b/modules/apivie/browser.py index 0b6e00b5da..fb8775267a 100644 --- a/modules/apivie/browser.py +++ b/modules/apivie/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, OperationsPage diff --git a/modules/apivie/pages.py b/modules/apivie/pages.py index 347a855ede..ef242d6bab 100644 --- a/modules/apivie/pages.py +++ b/modules/apivie/pages.py @@ -21,7 +21,7 @@ from decimal import Decimal from weboob.capabilities.bank import Account -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/arretsurimages/browser.py b/modules/arretsurimages/browser.py index 3cf6aa7fdc..40add9dbac 100644 --- a/modules/arretsurimages/browser.py +++ b/modules/arretsurimages/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser.decorators import id2url from .pages import VideoPage, IndexPage, LoginPage, LoginRedirectPage from .video import ArretSurImagesVideo diff --git a/modules/arretsurimages/pages.py b/modules/arretsurimages/pages.py index 8f9acd0b8d..ead810919f 100644 --- a/modules/arretsurimages/pages.py +++ b/modules/arretsurimages/pages.py @@ -21,7 +21,7 @@ from weboob.capabilities.base import UserError from weboob.capabilities.image import BaseImage -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.capabilities import NotAvailable diff --git a/modules/arte/browser.py b/modules/arte/browser.py index dba15b8acc..86cbadead8 100644 --- a/modules/arte/browser.py +++ b/modules/arte/browser.py @@ -25,8 +25,8 @@ from weboob.capabilities import NotAvailable from weboob.capabilities.image import BaseImage from weboob.tools.json import json as simplejson -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .pages import ArteLivePage, ArteLiveVideoPage from .video import ArteVideo, ArteLiveVideo diff --git a/modules/arte/pages.py b/modules/arte/pages.py index c686d44b1b..fd64467281 100644 --- a/modules/arte/pages.py +++ b/modules/arte/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.html import html2text from weboob.capabilities import NotAvailable from weboob.capabilities.image import BaseImage diff --git a/modules/attilasub/browser.py b/modules/attilasub/browser.py index b62a30bad8..f16db679ea 100644 --- a/modules/attilasub/browser.py +++ b/modules/attilasub/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import SubtitlesPage, SearchPage diff --git a/modules/attilasub/pages.py b/modules/attilasub/pages.py index 3e09ca6683..7d590c79f9 100644 --- a/modules/attilasub/pages.py +++ b/modules/attilasub/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.subtitle import Subtitle from weboob.capabilities.base import NotAvailable -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class SearchPage(Page): diff --git a/modules/audioaddict/module.py b/modules/audioaddict/module.py index dc561e7a56..46515c4d50 100644 --- a/modules/audioaddict/module.py +++ b/modules/audioaddict/module.py @@ -24,7 +24,7 @@ from weboob.capabilities.collection import CapCollection, Collection from weboob.tools.backend import Module, BackendConfig from weboob.tools.value import Value -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser import time __all__ = ['AudioAddictModule'] diff --git a/modules/aum/browser.py b/modules/aum/browser.py index c023b6556f..71c23ff6a1 100644 --- a/modules/aum/browser.py +++ b/modules/aum/browser.py @@ -26,9 +26,10 @@ import urllib import urllib2 -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrowserHTTPNotFound, BrowserUnavailable -from weboob.browser2.page import LoginBrowser, HTMLPage -from weboob.browser2.filters.standard import CleanText +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrowserHTTPNotFound, BrowserUnavailable +from weboob.browser.browsers import LoginBrowser +from weboob.browser.pages import HTMLPage +from weboob.browser.filters.standard import CleanText from weboob.tools.json import json from weboob.tools.date import local2utc from weboob.tools.misc import to_unicode diff --git a/modules/aum/module.py b/modules/aum/module.py index 1d8c7fddf6..32b1546e9c 100644 --- a/modules/aum/module.py +++ b/modules/aum/module.py @@ -31,7 +31,7 @@ from weboob.capabilities.contact import CapContact, ContactPhoto, Query, QueryError from weboob.capabilities.account import CapAccount, StatusField from weboob.tools.backend import Module, BackendConfig -from weboob.tools.browser import BrowserUnavailable, BrowserHTTPNotFound +from weboob.deprecated.browser import BrowserUnavailable, BrowserHTTPNotFound from weboob.tools.value import Value, ValueBool, ValueBackendPassword from weboob.tools.date import local2utc from weboob.tools.misc import to_unicode diff --git a/modules/aum/optim/profiles_walker.py b/modules/aum/optim/profiles_walker.py index e0a0debbde..8b87733294 100644 --- a/modules/aum/optim/profiles_walker.py +++ b/modules/aum/optim/profiles_walker.py @@ -19,7 +19,7 @@ from random import randint -from weboob.tools.browser import BrowserUnavailable +from weboob.deprecated.browser import BrowserUnavailable from weboob.capabilities.dating import Optimization from weboob.tools.log import getLogger diff --git a/modules/aum/optim/queries_queue.py b/modules/aum/optim/queries_queue.py index 563fd0cab7..b2cbea84ad 100644 --- a/modules/aum/optim/queries_queue.py +++ b/modules/aum/optim/queries_queue.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import BrowserUnavailable +from weboob.deprecated.browser import BrowserUnavailable from weboob.capabilities.dating import Optimization from weboob.capabilities.contact import QueryError from weboob.tools.log import getLogger diff --git a/modules/aum/optim/visibility.py b/modules/aum/optim/visibility.py index b7ec7eaf98..9fb4692ec4 100644 --- a/modules/aum/optim/visibility.py +++ b/modules/aum/optim/visibility.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import BrowserUnavailable +from weboob.deprecated.browser import BrowserUnavailable from weboob.capabilities.dating import Optimization diff --git a/modules/aum/test.py b/modules/aum/test.py index 10bb4415fb..62914a5950 100644 --- a/modules/aum/test.py +++ b/modules/aum/test.py @@ -19,7 +19,7 @@ from weboob.tools.test import BackendTest -from weboob.tools.browser import BrowserUnavailable +from weboob.deprecated.browser import BrowserUnavailable class AuMTest(BackendTest): diff --git a/modules/axabanque/browser.py b/modules/axabanque/browser.py index 8a1b848d84..7e23bed9e9 100644 --- a/modules/axabanque/browser.py +++ b/modules/axabanque/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, TransactionsPage, CBTransactionsPage, UnavailablePage diff --git a/modules/axabanque/pages.py b/modules/axabanque/pages.py index 830f8e9e08..33626c83f7 100644 --- a/modules/axabanque/pages.py +++ b/modules/axabanque/pages.py @@ -22,7 +22,7 @@ from decimal import Decimal, InvalidOperation import re -from weboob.tools.browser import Page as _BasePage, BrowserUnavailable, BrokenPageError +from weboob.deprecated.browser import Page as _BasePage, BrowserUnavailable, BrokenPageError from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard diff --git a/modules/banqueaccord/browser.py b/modules/banqueaccord/browser.py index 2f1ab704f9..fed455b678 100644 --- a/modules/banqueaccord/browser.py +++ b/modules/banqueaccord/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, need_login, URL -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, need_login, URL +from weboob.exceptions import BrowserIncorrectPassword from .pages import LoginPage, IndexPage, AccountsPage, OperationsPage diff --git a/modules/banqueaccord/pages.py b/modules/banqueaccord/pages.py index 8f7adee41b..85f0b835fd 100644 --- a/modules/banqueaccord/pages.py +++ b/modules/banqueaccord/pages.py @@ -24,13 +24,13 @@ from cStringIO import StringIO from weboob.capabilities.bank import Account -from weboob.browser2.page import HTMLPage, method, LoggedPage -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, Regexp, CleanDecimal, Env -from weboob.browser2.filters.html import Attr +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, Regexp, CleanDecimal, Env +from weboob.browser.filters.html import Attr from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError from weboob.tools.capabilities.bank.transactions import FrenchTransaction -from weboob.core.exceptions import ParseError +from weboob.exceptions import ParseError class Transaction(FrenchTransaction): diff --git a/modules/banquepopulaire/browser.py b/modules/banquepopulaire/browser.py index 5dd3479368..b1888db6cd 100644 --- a/modules/banquepopulaire/browser.py +++ b/modules/banquepopulaire/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrokenPageError +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrokenPageError from .pages import LoginPage, IndexPage, AccountsPage, CardsPage, TransactionsPage, \ UnavailablePage, RedirectPage, HomePage diff --git a/modules/banquepopulaire/pages.py b/modules/banquepopulaire/pages.py index 2529205635..6627aa1a2c 100644 --- a/modules/banquepopulaire/pages.py +++ b/modules/banquepopulaire/pages.py @@ -24,7 +24,7 @@ import re from mechanize import Cookie, FormNotFoundError -from weboob.tools.browser import Page as _BasePage, BrowserUnavailable, BrokenPageError +from weboob.deprecated.browser import Page as _BasePage, BrowserUnavailable, BrokenPageError from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/barclays/browser.py b/modules/barclays/browser.py index 24adf5af97..56dd7bc0a2 100644 --- a/modules/barclays/browser.py +++ b/modules/barclays/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, Login2Page, IndexPage, AccountsPage, TransactionsPage, \ CardPage, ValuationPage, LoanPage, MarketPage diff --git a/modules/barclays/pages.py b/modules/barclays/pages.py index 27cb08e626..3707981eab 100644 --- a/modules/barclays/pages.py +++ b/modules/barclays/pages.py @@ -22,7 +22,7 @@ from decimal import Decimal import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/biplan/browser.py b/modules/biplan/browser.py index 5c7903969b..d7c65dbf4f 100644 --- a/modules/biplan/browser.py +++ b/modules/biplan/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import ProgramPage, EventPage diff --git a/modules/biplan/pages.py b/modules/biplan/pages.py index 4732769d46..30d5d533e3 100644 --- a/modules/biplan/pages.py +++ b/modules/biplan/pages.py @@ -23,10 +23,10 @@ import weboob.tools.date as date_util from .calendar import BiplanCalendarEventConcert, BiplanCalendarEventTheatre -from weboob.browser2.elements import ItemElement, SkipItem, ListElement -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.filters.standard import Filter, CleanText, Env, Regexp, CombineDate -from weboob.browser2.filters.html import Link, CleanHTML +from weboob.browser.elements import ItemElement, SkipItem, ListElement, method +from weboob.browser.pages import HTMLPage +from weboob.browser.filters.standard import Filter, CleanText, Env, Regexp, CombineDate +from weboob.browser.filters.html import Link, CleanHTML class BiplanPrice(Filter): diff --git a/modules/bnporc/browser.py b/modules/bnporc/browser.py index 8d3eefaadf..771d76af69 100644 --- a/modules/bnporc/browser.py +++ b/modules/bnporc/browser.py @@ -22,7 +22,7 @@ from datetime import datetime from logging import warning -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrowserPasswordExpired +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrowserPasswordExpired from weboob.capabilities.bank import TransferError, Transfer from .perso.accounts_list import AccountsList, AccountPrelevement diff --git a/modules/bnporc/enterprise/browser.py b/modules/bnporc/enterprise/browser.py index a414d5dc9a..be9c66dfbe 100644 --- a/modules/bnporc/enterprise/browser.py +++ b/modules/bnporc/enterprise/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, HistoryPage, UnknownPage diff --git a/modules/bnporc/enterprise/pages.py b/modules/bnporc/enterprise/pages.py index 204f392f02..1d6752c264 100644 --- a/modules/bnporc/enterprise/pages.py +++ b/modules/bnporc/enterprise/pages.py @@ -24,7 +24,7 @@ import re from weboob.capabilities.bank import Account -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError from weboob.tools.misc import to_unicode diff --git a/modules/bnporc/perso/accounts_list.py b/modules/bnporc/perso/accounts_list.py index 4d8d596b6b..b264de549e 100644 --- a/modules/bnporc/perso/accounts_list.py +++ b/modules/bnporc/perso/accounts_list.py @@ -24,7 +24,7 @@ from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.capabilities.bank import Account from weboob.capabilities.base import NotAvailable -from weboob.tools.browser import Page, BrokenPageError, BrowserPasswordExpired +from weboob.deprecated.browser import Page, BrokenPageError, BrowserPasswordExpired class AccountsList(Page): diff --git a/modules/bnporc/perso/login.py b/modules/bnporc/perso/login.py index 27edb8d727..8283f268e4 100644 --- a/modules/bnporc/perso/login.py +++ b/modules/bnporc/perso/login.py @@ -22,7 +22,7 @@ import re import urllib -from weboob.tools.browser import Page, BrowserUnavailable +from weboob.deprecated.browser import Page, BrowserUnavailable from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError diff --git a/modules/bnporc/perso/messages.py b/modules/bnporc/perso/messages.py index 39c6338cf4..f48ef1fb53 100644 --- a/modules/bnporc/perso/messages.py +++ b/modules/bnporc/perso/messages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.capabilities.messages import Message, Thread from weboob.capabilities.base import NotLoaded from weboob.tools.capabilities.messages.genericArticle import try_drop_tree diff --git a/modules/bnporc/perso/transactions.py b/modules/bnporc/perso/transactions.py index 4b49686cb8..d2034cac92 100644 --- a/modules/bnporc/perso/transactions.py +++ b/modules/bnporc/perso/transactions.py @@ -20,7 +20,7 @@ import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/bnporc/perso/transfer.py b/modules/bnporc/perso/transfer.py index fdbd6d6337..8c75b33622 100644 --- a/modules/bnporc/perso/transfer.py +++ b/modules/bnporc/perso/transfer.py @@ -20,7 +20,7 @@ import re -from weboob.tools.browser import Page, BrowserPasswordExpired +from weboob.deprecated.browser import Page, BrowserPasswordExpired from weboob.tools.ordereddict import OrderedDict from weboob.capabilities.bank import TransferError diff --git a/modules/bnporc/pro.py b/modules/bnporc/pro.py index c7a9e4d64a..700dd54452 100644 --- a/modules/bnporc/pro.py +++ b/modules/bnporc/pro.py @@ -24,7 +24,7 @@ from weboob.capabilities import NotAvailable from weboob.capabilities.bank import Account -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from .perso.transactions import Transaction diff --git a/modules/boursorama/browser.py b/modules/boursorama/browser.py index 9c3abad447..456f355f57 100644 --- a/modules/boursorama/browser.py +++ b/modules/boursorama/browser.py @@ -20,7 +20,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsList, AccountHistory, CardHistory, UpdateInfoPage, AuthenticationPage diff --git a/modules/boursorama/pages/account_history.py b/modules/boursorama/pages/account_history.py index 580b249eb4..378b039747 100644 --- a/modules/boursorama/pages/account_history.py +++ b/modules/boursorama/pages/account_history.py @@ -22,7 +22,7 @@ from urlparse import urlparse import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/boursorama/pages/accounts_list.py b/modules/boursorama/pages/accounts_list.py index fd564f81a8..3aeb03a234 100644 --- a/modules/boursorama/pages/accounts_list.py +++ b/modules/boursorama/pages/accounts_list.py @@ -22,7 +22,7 @@ from decimal import Decimal from weboob.capabilities.bank import Account -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/boursorama/pages/card_history.py b/modules/boursorama/pages/card_history.py index 5cb4db745e..fda99c8f79 100644 --- a/modules/boursorama/pages/card_history.py +++ b/modules/boursorama/pages/card_history.py @@ -21,7 +21,7 @@ import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/boursorama/pages/login.py b/modules/boursorama/pages/login.py index db9bf28869..332e66a13a 100644 --- a/modules/boursorama/pages/login.py +++ b/modules/boursorama/pages/login.py @@ -22,7 +22,7 @@ import hashlib import urllib -from weboob.tools.browser import Page, BrowserIncorrectPassword +from weboob.deprecated.browser import Page, BrowserIncorrectPassword from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard diff --git a/modules/boursorama/pages/two_authentication.py b/modules/boursorama/pages/two_authentication.py index 2de119726c..3549a5d072 100644 --- a/modules/boursorama/pages/two_authentication.py +++ b/modules/boursorama/pages/two_authentication.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Page, BrowserIncorrectPassword +from weboob.deprecated.browser import Page, BrowserIncorrectPassword import urllib2 import re diff --git a/modules/bouygues/browser.py b/modules/bouygues/browser.py index fd4b69abb1..95491bd6f5 100644 --- a/modules/bouygues/browser.py +++ b/modules/bouygues/browser.py @@ -21,7 +21,7 @@ from .pages.compose import ComposeFrame, ComposePage, ConfirmPage, SentPage from .pages.login import LoginPage, LoginSASPage -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword __all__ = ['BouyguesBrowser'] diff --git a/modules/bouygues/pages/compose.py b/modules/bouygues/pages/compose.py index dcbe38d77f..26c16aeb2a 100644 --- a/modules/bouygues/pages/compose.py +++ b/modules/bouygues/pages/compose.py @@ -21,7 +21,7 @@ import re from weboob.capabilities.messages import CantSendMessage -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ComposeFrame(Page): diff --git a/modules/bouygues/pages/login.py b/modules/bouygues/pages/login.py index 94dc4c27c0..cff708b59a 100644 --- a/modules/bouygues/pages/login.py +++ b/modules/bouygues/pages/login.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class LoginPage(Page): diff --git a/modules/bp/browser.py b/modules/bp/browser.py index 141bd5df92..2b853d68d9 100644 --- a/modules/bp/browser.py +++ b/modules/bp/browser.py @@ -21,7 +21,7 @@ from urlparse import urlsplit, parse_qsl from datetime import datetime -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrowserBanned +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrowserBanned from .pages import LoginPage, Initident, CheckPassword, repositionnerCheminCourant, BadLoginPage, AccountDesactivate, \ AccountList, AccountHistory, CardsList, UnavailablePage, \ diff --git a/modules/bp/pages/accounthistory.py b/modules/bp/pages/accounthistory.py index 50f37de79d..5b2a5bcedb 100644 --- a/modules/bp/pages/accounthistory.py +++ b/modules/bp/pages/accounthistory.py @@ -22,7 +22,7 @@ import re from weboob.tools.capabilities.bank.transactions import FrenchTransaction -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class Transaction(FrenchTransaction): diff --git a/modules/bp/pages/accountlist.py b/modules/bp/pages/accountlist.py index 63b01dd99c..e25951486c 100644 --- a/modules/bp/pages/accountlist.py +++ b/modules/bp/pages/accountlist.py @@ -21,7 +21,7 @@ from decimal import Decimal from weboob.capabilities.bank import Account, AccountNotFound -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.misc import to_unicode from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.ordereddict import OrderedDict diff --git a/modules/bp/pages/login.py b/modules/bp/pages/login.py index 829d52fae1..651adbccf8 100644 --- a/modules/bp/pages/login.py +++ b/modules/bp/pages/login.py @@ -23,7 +23,7 @@ import re import lxml.etree as etree -from weboob.tools.browser import Page, BrowserUnavailable +from weboob.deprecated.browser import Page, BrowserUnavailable from weboob.tools.captcha.virtkeyboard import VirtKeyboard diff --git a/modules/bp/pages/transfer.py b/modules/bp/pages/transfer.py index 8731cc95a2..12ee8d3ad7 100644 --- a/modules/bp/pages/transfer.py +++ b/modules/bp/pages/transfer.py @@ -21,7 +21,7 @@ import re from weboob.capabilities.bank import TransferError -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.misc import to_unicode diff --git a/modules/bred/browser.py b/modules/bred/browser.py index a1d3474601..a3a8fc50cf 100644 --- a/modules/bred/browser.py +++ b/modules/bred/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, LoginResultPage, AccountsPage, EmptyPage, TransactionsPage diff --git a/modules/bred/pages.py b/modules/bred/pages.py index 45bea8f36e..52c13c69bf 100644 --- a/modules/bred/pages.py +++ b/modules/bred/pages.py @@ -19,13 +19,13 @@ from mechanize import FormNotFoundError -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm ControlNotFoundError = ClientForm.ControlNotFoundError from decimal import Decimal, InvalidOperation import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.misc import to_unicode from weboob.tools.ordereddict import OrderedDict from weboob.capabilities.bank import Account diff --git a/modules/btdigg/browser.py b/modules/btdigg/browser.py index 3499b0673b..359722db05 100644 --- a/modules/btdigg/browser.py +++ b/modules/btdigg/browser.py @@ -2,7 +2,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages.index import IndexPage from .pages.torrents import TorrentsPage, TorrentPage diff --git a/modules/btdigg/pages/index.py b/modules/btdigg/pages/index.py index 94f58688a4..7f948f77ad 100644 --- a/modules/btdigg/pages/index.py +++ b/modules/btdigg/pages/index.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class IndexPage(Page): diff --git a/modules/btdigg/pages/torrents.py b/modules/btdigg/pages/torrents.py index 4fc9a84233..aa97b32222 100644 --- a/modules/btdigg/pages/torrents.py +++ b/modules/btdigg/pages/torrents.py @@ -4,7 +4,7 @@ from urlparse import urlparse, parse_qs from weboob.tools.misc import get_bytes_size -from weboob.tools.browser import Page,BrokenPageError +from weboob.deprecated.browser import Page,BrokenPageError from weboob.capabilities.torrent import Torrent, MagnetOnly from weboob.capabilities.base import NotAvailable diff --git a/modules/btmon/browser.py b/modules/btmon/browser.py index 78c6e4d764..f2f14ec850 100644 --- a/modules/btmon/browser.py +++ b/modules/btmon/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import TorrentsPage, TorrentPage diff --git a/modules/btmon/pages.py b/modules/btmon/pages.py index fb2f7a6338..d9fa7e63be 100644 --- a/modules/btmon/pages.py +++ b/modules/btmon/pages.py @@ -22,7 +22,7 @@ from weboob.capabilities.torrent import Torrent from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.misc import get_bytes_size diff --git a/modules/caissedepargne/browser.py b/modules/caissedepargne/browser.py index 001d20d980..b5772ee94f 100644 --- a/modules/caissedepargne/browser.py +++ b/modules/caissedepargne/browser.py @@ -22,7 +22,7 @@ import hashlib from urlparse import urlsplit -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, IndexPage, ErrorPage, UnavailablePage diff --git a/modules/caissedepargne/pages.py b/modules/caissedepargne/pages.py index 20d5ea2b74..1d8c586f49 100644 --- a/modules/caissedepargne/pages.py +++ b/modules/caissedepargne/pages.py @@ -18,15 +18,15 @@ # along with weboob. If not, see . -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm ControlNotFoundError = ClientForm.ControlNotFoundError from decimal import Decimal import re -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm from weboob.tools.ordereddict import OrderedDict -from weboob.tools.browser import Page, BrokenPageError, BrowserUnavailable, BrowserIncorrectPassword +from weboob.deprecated.browser import Page, BrokenPageError, BrowserUnavailable, BrowserIncorrectPassword from weboob.capabilities import NotAvailable from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/canalplus/browser.py b/modules/canalplus/browser.py index 9a0fd551de..107fbd7290 100644 --- a/modules/canalplus/browser.py +++ b/modules/canalplus/browser.py @@ -22,8 +22,8 @@ import lxml.etree -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .pages import ChannelsPage, VideoPage from .video import CanalplusVideo diff --git a/modules/canalplus/pages.py b/modules/canalplus/pages.py index 184e1d5b32..8230030fc3 100644 --- a/modules/canalplus/pages.py +++ b/modules/canalplus/pages.py @@ -20,7 +20,7 @@ from datetime import datetime import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.collection import Collection from weboob.capabilities.base import NotAvailable, NotLoaded from weboob.capabilities.image import BaseImage diff --git a/modules/canaltp/browser.py b/modules/canaltp/browser.py index 57833fa0fb..b42871322d 100644 --- a/modules/canaltp/browser.py +++ b/modules/canaltp/browser.py @@ -20,9 +20,9 @@ from datetime import datetime, date, time -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.tools.misc import to_unicode -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError __all__ = ['CanalTP'] diff --git a/modules/cappedtv/browser.py b/modules/cappedtv/browser.py index d56402a784..700ffb4a3c 100644 --- a/modules/cappedtv/browser.py +++ b/modules/cappedtv/browser.py @@ -13,10 +13,10 @@ import datetime from weboob.capabilities.base import NotAvailable from weboob.tools.misc import to_unicode -from weboob.tools.browser import Page -from weboob.tools.browser import BrokenPageError -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Page +from weboob.deprecated.browser import BrokenPageError +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from weboob.capabilities.image import BaseImage from weboob.capabilities.video import BaseVideo from weboob.tools.ordereddict import OrderedDict diff --git a/modules/carrefourbanque/browser.py b/modules/carrefourbanque/browser.py index 9e6d57f218..23a012d586 100644 --- a/modules/carrefourbanque/browser.py +++ b/modules/carrefourbanque/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword from .pages import LoginPage, HomePage, TransactionsPage diff --git a/modules/carrefourbanque/pages.py b/modules/carrefourbanque/pages.py index d951338636..5fd14ff13a 100644 --- a/modules/carrefourbanque/pages.py +++ b/modules/carrefourbanque/pages.py @@ -20,10 +20,10 @@ import re -from weboob.browser2.page import HTMLPage, method, LoggedPage -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import Regexp, CleanText, CleanDecimal, Format -from weboob.browser2.filters.html import Link +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import Regexp, CleanText, CleanDecimal, Format +from weboob.browser.filters.html import Link from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/cci/browser.py b/modules/cci/browser.py index 9f8de9f156..2c3221a86a 100644 --- a/modules/cci/browser.py +++ b/modules/cci/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from weboob.capabilities.job import BaseJobAdvert from .pages import SearchPage diff --git a/modules/cci/pages.py b/modules/cci/pages.py index 3395e3b377..d3f034f42e 100644 --- a/modules/cci/pages.py +++ b/modules/cci/pages.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ItemElement, TableElement -from weboob.browser2.filters.standard import Filter, CleanText, Format, Env, DateTime, TableCell, Join -from weboob.browser2.filters.html import Link, CleanHTML +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ItemElement, TableElement, method +from weboob.browser.filters.standard import Filter, CleanText, Format, Env, DateTime, TableCell, Join +from weboob.browser.filters.html import Link, CleanHTML from weboob.capabilities.job import BaseJobAdvert diff --git a/modules/champslibres/browser.py b/modules/champslibres/browser.py index c82c0b47ca..0217deac05 100644 --- a/modules/champslibres/browser.py +++ b/modules/champslibres/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, HomePage, HistoryPage, RentedPage diff --git a/modules/champslibres/pages.py b/modules/champslibres/pages.py index b00cfc7b7c..25fd10b71a 100644 --- a/modules/champslibres/pages.py +++ b/modules/champslibres/pages.py @@ -19,8 +19,8 @@ from datetime import date from weboob.capabilities.library import Book, Renew -from weboob.tools.browser import Page -from weboob.tools.mech import ClientForm +from weboob.deprecated.browser import Page +from weboob.deprecated.mech import ClientForm from weboob.tools.html import html2text diff --git a/modules/chronopost/browser.py b/modules/chronopost/browser.py index a93fae365f..a87a174a1c 100644 --- a/modules/chronopost/browser.py +++ b/modules/chronopost/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import IndexPage, TrackPage diff --git a/modules/chronopost/pages.py b/modules/chronopost/pages.py index c198149c07..b7038228d3 100644 --- a/modules/chronopost/pages.py +++ b/modules/chronopost/pages.py @@ -23,7 +23,7 @@ from weboob.capabilities.parcel import Parcel, Event from weboob.capabilities import NotAvailable -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class IndexPage(Page): diff --git a/modules/cic/browser.py b/modules/cic/browser.py index 5fcbc4cc3c..4d747fba99 100644 --- a/modules/cic/browser.py +++ b/modules/cic/browser.py @@ -21,7 +21,7 @@ from urlparse import urlsplit, parse_qsl, urlparse from datetime import datetime, timedelta -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.capabilities.bank import Transfer, TransferError from .pages import LoginPage, LoginErrorPage, AccountsPage, UserSpacePage, EmptyPage, \ diff --git a/modules/cic/pages.py b/modules/cic/pages.py index c9ee1f796b..f045c8c3c4 100644 --- a/modules/cic/pages.py +++ b/modules/cic/pages.py @@ -24,7 +24,7 @@ import re from dateutil.relativedelta import relativedelta -from weboob.tools.browser import Page, BrowserIncorrectPassword, BrokenPageError +from weboob.deprecated.browser import Page, BrowserIncorrectPassword, BrokenPageError from weboob.tools.ordereddict import OrderedDict from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/citelis/browser.py b/modules/citelis/browser.py index 5cffa99516..6adf11fb44 100644 --- a/modules/citelis/browser.py +++ b/modules/citelis/browser.py @@ -19,7 +19,7 @@ from weboob.capabilities.bank import Account -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, SummaryPage, UselessPage, TransactionSearchPage, TransactionsPage, TransactionsCsvPage diff --git a/modules/citelis/pages.py b/modules/citelis/pages.py index cf37192e7e..e7d91dc92d 100644 --- a/modules/citelis/pages.py +++ b/modules/citelis/pages.py @@ -22,7 +22,7 @@ import datetime import re -from weboob.tools.browser import Page, BrowserIncorrectPassword +from weboob.deprecated.browser import Page, BrowserIncorrectPassword from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/cmb/module.py b/modules/cmb/module.py index 075e9ada30..a4cc56798e 100644 --- a/modules/cmb/module.py +++ b/modules/cmb/module.py @@ -22,8 +22,8 @@ from weboob.tools.backend import Module, BackendConfig from weboob.tools.value import ValueBackendPassword from weboob.capabilities.base import NotAvailable -from weboob.core.exceptions import BrowserIncorrectPassword, ParseError -from weboob.browser2 import Browser +from weboob.exceptions import BrowserIncorrectPassword, ParseError +from weboob.browser import Browser from re import match, compile, sub from decimal import Decimal diff --git a/modules/cmso/browser.py b/modules/cmso/browser.py index d45da6b239..bec6c2d950 100644 --- a/modules/cmso/browser.py +++ b/modules/cmso/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, TransactionsPage diff --git a/modules/cmso/pages.py b/modules/cmso/pages.py index 9339372b5c..940c616a97 100644 --- a/modules/cmso/pages.py +++ b/modules/cmso/pages.py @@ -22,7 +22,7 @@ from decimal import Decimal import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/colisprive/browser.py b/modules/colisprive/browser.py index f37c5518c6..8e645fa653 100644 --- a/modules/colisprive/browser.py +++ b/modules/colisprive/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import TrackPage, ErrorPage diff --git a/modules/colisprive/pages.py b/modules/colisprive/pages.py index 9d3e81ce40..70ee6241d0 100644 --- a/modules/colisprive/pages.py +++ b/modules/colisprive/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from datetime import date -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.parcel import Parcel, Event diff --git a/modules/colissimo/browser.py b/modules/colissimo/browser.py index 1ec1c747b0..99259aa84e 100644 --- a/modules/colissimo/browser.py +++ b/modules/colissimo/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from weboob.tools.json import json -from weboob.tools.browser import Browser, BrowserBanned +from weboob.deprecated.browser import Browser, BrowserBanned __all__ = ['ColissimoBrowser'] diff --git a/modules/cragr/mobile/browser.py b/modules/cragr/mobile/browser.py index e9fb9acf76..7a52694321 100644 --- a/modules/cragr/mobile/browser.py +++ b/modules/cragr/mobile/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.tools.date import LinearDateGuesser from weboob.capabilities.bank import Transfer, TransferError from .pages import LoginPage, AccountsList diff --git a/modules/cragr/mobile/pages/base.py b/modules/cragr/mobile/pages/base.py index e8b33381cc..24535de57c 100644 --- a/modules/cragr/mobile/pages/base.py +++ b/modules/cragr/mobile/pages/base.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page -from weboob.tools.browser import BrowserUnavailable +from weboob.deprecated.browser import Page +from weboob.deprecated.browser import BrowserUnavailable class CragrBasePage(Page): diff --git a/modules/cragr/mobile/pages/login.py b/modules/cragr/mobile/pages/login.py index ae85847aa4..2ea2c62c60 100644 --- a/modules/cragr/mobile/pages/login.py +++ b/modules/cragr/mobile/pages/login.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm ControlNotFoundError = ClientForm.ControlNotFoundError from .base import CragrBasePage diff --git a/modules/cragr/web/browser.py b/modules/cragr/web/browser.py index 6d94d73a11..aa58afb2b8 100644 --- a/modules/cragr/web/browser.py +++ b/modules/cragr/web/browser.py @@ -21,7 +21,7 @@ import urllib import re -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.tools.date import LinearDateGuesser from .pages import HomePage, LoginPage, LoginErrorPage, AccountsPage, \ diff --git a/modules/cragr/web/pages.py b/modules/cragr/web/pages.py index c1edec5b76..680c2105cb 100644 --- a/modules/cragr/web/pages.py +++ b/modules/cragr/web/pages.py @@ -22,7 +22,7 @@ from weboob.tools.date import parse_french_date from weboob.capabilities.bank import Account -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.tools.capabilities.bank.transactions import FrenchTransaction as Transaction diff --git a/modules/creditcooperatif/perso/browser.py b/modules/creditcooperatif/perso/browser.py index 30813f3d4e..49d74cc192 100644 --- a/modules/creditcooperatif/perso/browser.py +++ b/modules/creditcooperatif/perso/browser.py @@ -19,7 +19,7 @@ import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, LoggedPage, AccountsPage, TransactionsPage, TransactionsJSONPage, ComingTransactionsPage diff --git a/modules/creditcooperatif/perso/pages.py b/modules/creditcooperatif/perso/pages.py index 3a9224dba7..008fd79a85 100644 --- a/modules/creditcooperatif/perso/pages.py +++ b/modules/creditcooperatif/perso/pages.py @@ -22,7 +22,7 @@ import re from weboob.tools.json import json -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/creditcooperatif/pro/browser.py b/modules/creditcooperatif/pro/browser.py index b40291b372..35ec276bcf 100644 --- a/modules/creditcooperatif/pro/browser.py +++ b/modules/creditcooperatif/pro/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, ITransactionsPage, TransactionsPage, ComingTransactionsPage, CardTransactionsPage diff --git a/modules/creditcooperatif/pro/pages.py b/modules/creditcooperatif/pro/pages.py index 1b9ffae746..d1ca85bde6 100644 --- a/modules/creditcooperatif/pro/pages.py +++ b/modules/creditcooperatif/pro/pages.py @@ -22,7 +22,7 @@ import re import time -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/creditdunord/browser.py b/modules/creditdunord/browser.py index 705e8fc128..db711288dd 100644 --- a/modules/creditdunord/browser.py +++ b/modules/creditdunord/browser.py @@ -21,7 +21,7 @@ import re import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, ProAccountsPage, TransactionsPage, ProTransactionsPage diff --git a/modules/creditdunord/pages.py b/modules/creditdunord/pages.py index 6dcd7e8dc1..25406eb756 100644 --- a/modules/creditdunord/pages.py +++ b/modules/creditdunord/pages.py @@ -23,7 +23,7 @@ import re from cStringIO import StringIO -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.tools.json import json from weboob.capabilities.bank import Account from weboob.capabilities import NotAvailable diff --git a/modules/creditmutuel/browser.py b/modules/creditmutuel/browser.py index 310fee4dc0..03d1c2c0c3 100644 --- a/modules/creditmutuel/browser.py +++ b/modules/creditmutuel/browser.py @@ -26,8 +26,10 @@ from datetime import datetime, timedelta from weboob.tools.compat import basestring -from weboob.browser2 import LoginBrowser, URL, Wget, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser.browsers import LoginBrowser, need_login +from weboob.browser.profiles import Wget +from weboob.browser.url import URL +from weboob.exceptions import BrowserIncorrectPassword from weboob.capabilities.bank import Transfer, TransferError from .pages import LoginPage, LoginErrorPage, AccountsPage, UserSpacePage, \ diff --git a/modules/creditmutuel/pages.py b/modules/creditmutuel/pages.py index 7ffc20f0a1..5b595ffb4b 100644 --- a/modules/creditmutuel/pages.py +++ b/modules/creditmutuel/pages.py @@ -27,11 +27,11 @@ import re from dateutil.relativedelta import relativedelta -from weboob.browser2.page import HTMLPage, method, FormNotFound, LoggedPage -from weboob.browser2.elements import ListElement, ItemElement, SkipItem -from weboob.browser2.filters.standard import Filter, Env, CleanText, CleanDecimal, Field, TableCell -from weboob.browser2.filters.html import Link -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser.pages import HTMLPage, FormNotFound, LoggedPage +from weboob.browser.elements import ListElement, ItemElement, SkipItem, method +from weboob.browser.filters.standard import Filter, Env, CleanText, CleanDecimal, Field, TableCell +from weboob.browser.filters.html import Link +from weboob.exceptions import BrowserIncorrectPassword from weboob.capabilities import NotAvailable from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/cuisineaz/browser.py b/modules/cuisineaz/browser.py index fce4887e50..064b0b5c0f 100644 --- a/modules/cuisineaz/browser.py +++ b/modules/cuisineaz/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import RecipePage, ResultsPage diff --git a/modules/cuisineaz/pages.py b/modules/cuisineaz/pages.py index 37f7615f95..537dce6a4e 100644 --- a/modules/cuisineaz/pages.py +++ b/modules/cuisineaz/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.recipe import Recipe, Comment from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ResultsPage(Page): diff --git a/modules/dailymotion/browser.py b/modules/dailymotion/browser.py index c531679eac..7dfd78f843 100644 --- a/modules/dailymotion/browser.py +++ b/modules/dailymotion/browser.py @@ -19,8 +19,8 @@ from urllib import quote_plus -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .pages import IndexPage, VideoPage, KidsVideoPage from .video import DailymotionVideo diff --git a/modules/dailymotion/pages.py b/modules/dailymotion/pages.py index 11ddab4dcc..4b0315ac03 100644 --- a/modules/dailymotion/pages.py +++ b/modules/dailymotion/pages.py @@ -27,7 +27,7 @@ from weboob.capabilities import NotAvailable from weboob.capabilities.image import BaseImage from weboob.tools.html import html2text -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from .video import DailymotionVideo diff --git a/modules/delubac/browser.py b/modules/delubac/browser.py index 1c4ccc8c3e..b9bac13cdb 100644 --- a/modules/delubac/browser.py +++ b/modules/delubac/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, DashboardPage, OperationsPage, LCRPage diff --git a/modules/delubac/pages.py b/modules/delubac/pages.py index 8fec3866f5..71a682e8d8 100644 --- a/modules/delubac/pages.py +++ b/modules/delubac/pages.py @@ -22,7 +22,7 @@ import re from weboob.capabilities.bank import Account -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/dlfp/browser.py b/modules/dlfp/browser.py index 5765a3b5cc..b6713cf098 100644 --- a/modules/dlfp/browser.py +++ b/modules/dlfp/browser.py @@ -23,7 +23,7 @@ import hashlib import lxml -from weboob.tools.browser import Browser, BrowserHTTPNotFound, BrowserHTTPError, BrowserIncorrectPassword, BrokenPageError +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound, BrowserHTTPError, BrowserIncorrectPassword, BrokenPageError from weboob.capabilities.messages import CantSendMessage from .pages.index import IndexPage, LoginPage diff --git a/modules/dlfp/module.py b/modules/dlfp/module.py index 5ddbb1c9a8..13e32a7dd3 100644 --- a/modules/dlfp/module.py +++ b/modules/dlfp/module.py @@ -24,7 +24,7 @@ import time from weboob.tools.backend import Module, BackendConfig -from weboob.tools.browser import BrowserForbidden +from weboob.deprecated.browser import BrowserForbidden from weboob.tools.newsfeed import Newsfeed from weboob.tools.value import Value, ValueBool, ValueBackendPassword from weboob.capabilities.messages import CapMessages, CapMessagesPost, Message, Thread, CantSendMessage diff --git a/modules/dlfp/pages/board.py b/modules/dlfp/pages/board.py index f95503b4e5..8d4ba5199a 100644 --- a/modules/dlfp/pages/board.py +++ b/modules/dlfp/pages/board.py @@ -21,7 +21,7 @@ import re from logging import warning -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class Message(object): diff --git a/modules/dlfp/pages/index.py b/modules/dlfp/pages/index.py index f3ae76dc7b..d06b97631f 100644 --- a/modules/dlfp/pages/index.py +++ b/modules/dlfp/pages/index.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class DLFPPage(Page): diff --git a/modules/dlfp/pages/news.py b/modules/dlfp/pages/news.py index a10145a3d6..1b2c57771c 100644 --- a/modules/dlfp/pages/news.py +++ b/modules/dlfp/pages/news.py @@ -20,7 +20,7 @@ from datetime import datetime -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from weboob.tools.date import local2utc from ..tools import url2id diff --git a/modules/dlfp/pages/wiki.py b/modules/dlfp/pages/wiki.py index e59165fe15..eeafdb4553 100644 --- a/modules/dlfp/pages/wiki.py +++ b/modules/dlfp/pages/wiki.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from .index import DLFPPage diff --git a/modules/dresdenwetter/browser.py b/modules/dresdenwetter/browser.py index 4742739c14..380be9cd8f 100644 --- a/modules/dresdenwetter/browser.py +++ b/modules/dresdenwetter/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import StartPage diff --git a/modules/dresdenwetter/pages.py b/modules/dresdenwetter/pages.py index 3c8595114d..32a2bfbc42 100644 --- a/modules/dresdenwetter/pages.py +++ b/modules/dresdenwetter/pages.py @@ -17,9 +17,9 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, Regexp, Field, Filter, debug +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, Regexp, Field, Filter, debug from weboob.capabilities.gauge import GaugeMeasure, GaugeSensor from weboob.capabilities.base import NotAvailable diff --git a/modules/ebonics/module.py b/modules/ebonics/module.py index 94a7250ccc..cc2b02a6d7 100644 --- a/modules/ebonics/module.py +++ b/modules/ebonics/module.py @@ -22,7 +22,7 @@ from weboob.capabilities.translate import CapTranslate, Translation, TranslationFail, LanguageNotSupported from weboob.tools.backend import Module -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser __all__ = ['EbonicsModule'] diff --git a/modules/edf/browser.py b/modules/edf/browser.py index d853b1f374..28d8b7aacd 100644 --- a/modules/edf/browser.py +++ b/modules/edf/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.capabilities.bill import Detail from decimal import Decimal from .pages import LoginPage, FirstRedirectionPage, SecondRedirectionPage, OtherPage, AccountPage, BillsPage, LastPaymentsPage, LastPaymentsPage2 diff --git a/modules/edf/pages.py b/modules/edf/pages.py index 777c64a47c..14361d93b7 100644 --- a/modules/edf/pages.py +++ b/modules/edf/pages.py @@ -22,7 +22,7 @@ import re import urllib from decimal import Decimal -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bill import Subscription, Detail, Bill base_url = "http://particuliers.edf.com/" diff --git a/modules/ehentai/browser.py b/modules/ehentai/browser.py index 96a8bc218a..4da0b18f19 100644 --- a/modules/ehentai/browser.py +++ b/modules/ehentai/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from urllib import urlencode from .pages import IndexPage, GalleryPage, ImagePage, HomePage, LoginPage diff --git a/modules/ehentai/pages.py b/modules/ehentai/pages.py index 6712c7cf86..4547eedc9d 100644 --- a/modules/ehentai/pages.py +++ b/modules/ehentai/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.html import html2text from weboob.capabilities.image import BaseImage diff --git a/modules/europarl/browser.py b/modules/europarl/browser.py index 2718f98b22..1770384b79 100644 --- a/modules/europarl/browser.py +++ b/modules/europarl/browser.py @@ -19,8 +19,8 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url #from .pages.index import IndexPage from .pages import VideoPage diff --git a/modules/europarl/pages.py b/modules/europarl/pages.py index 92de9a2f99..664f25c365 100644 --- a/modules/europarl/pages.py +++ b/modules/europarl/pages.py @@ -18,16 +18,16 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm ControlNotFoundError = ClientForm.ControlNotFoundError -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import re import datetime from weboob.capabilities.base import NotAvailable -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from .video import EuroparlVideo diff --git a/modules/feedly/browser.py b/modules/feedly/browser.py index cf8e4969ae..53b4e3f39d 100644 --- a/modules/feedly/browser.py +++ b/modules/feedly/browser.py @@ -19,7 +19,7 @@ from weboob.tools.json import json from weboob.capabilities.collection import Collection -from weboob.browser2 import LoginBrowser, URL, need_login +from weboob.browser import LoginBrowser, URL, need_login from .pages import EssentialsPage, TokenPage, ContentsPage, PreferencesPage diff --git a/modules/feedly/google.py b/modules/feedly/google.py index 1535546530..46884bd80c 100644 --- a/modules/feedly/google.py +++ b/modules/feedly/google.py @@ -19,8 +19,9 @@ from urlparse import urlparse, parse_qs -from weboob.browser2 import LoginBrowser, URL, HTMLPage -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL +from weboob.browser.pages import HTMLPage +from weboob.exceptions import BrowserIncorrectPassword class GoogleLoginPage(HTMLPage): diff --git a/modules/feedly/pages.py b/modules/feedly/pages.py index 10ca4f288e..6c0031f33b 100644 --- a/modules/feedly/pages.py +++ b/modules/feedly/pages.py @@ -21,11 +21,11 @@ from weboob.capabilities.messages import Message from weboob.capabilities.collection import Collection -from weboob.browser2.page import JsonPage, method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, Format -from weboob.browser2.filters.json import Dict -from weboob.browser2.filters.html import CleanHTML +from weboob.browser.pages import JsonPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, Format +from weboob.browser.filters.json import Dict +from weboob.browser.filters.html import CleanHTML class DictElement(ListElement): diff --git a/modules/fortuneo/browser.py b/modules/fortuneo/browser.py index eff32095d2..d9cfbe67fe 100644 --- a/modules/fortuneo/browser.py +++ b/modules/fortuneo/browser.py @@ -22,7 +22,7 @@ from datetime import date from dateutil.relativedelta import relativedelta -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages.login import LoginPage from .pages.accounts_list import GlobalAccountsList, AccountsList, AccountHistoryPage diff --git a/modules/fortuneo/pages/accounts_list.py b/modules/fortuneo/pages/accounts_list.py index 5e007f4c60..f294b2232a 100644 --- a/modules/fortuneo/pages/accounts_list.py +++ b/modules/fortuneo/pages/accounts_list.py @@ -24,7 +24,7 @@ from time import sleep from weboob.capabilities.bank import Account -from weboob.tools.browser import Page, BrowserIncorrectPassword +from weboob.deprecated.browser import Page, BrowserIncorrectPassword from weboob.capabilities import NotAvailable from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.json import json diff --git a/modules/fortuneo/pages/login.py b/modules/fortuneo/pages/login.py index 88bf2405ce..26b9fb8fe8 100644 --- a/modules/fortuneo/pages/login.py +++ b/modules/fortuneo/pages/login.py @@ -20,7 +20,7 @@ #from logging import error -from weboob.tools.browser import Page, BrowserUnavailable +from weboob.deprecated.browser import Page, BrowserUnavailable class LoginPage(Page): diff --git a/modules/fourchan/browser.py b/modules/fourchan/browser.py index a9ae22474a..89bc1ec162 100644 --- a/modules/fourchan/browser.py +++ b/modules/fourchan/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages.board import BoardPage diff --git a/modules/fourchan/pages/board.py b/modules/fourchan/pages/board.py index 8f77b27b24..663a078c52 100644 --- a/modules/fourchan/pages/board.py +++ b/modules/fourchan/pages/board.py @@ -22,7 +22,7 @@ from datetime import datetime -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class Message(object): diff --git a/modules/francetelevisions/browser.py b/modules/francetelevisions/browser.py index 4ea6124b0c..5ef4cff723 100644 --- a/modules/francetelevisions/browser.py +++ b/modules/francetelevisions/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import IndexPage, VideoPage __all__ = ['PluzzBrowser'] diff --git a/modules/francetelevisions/pages.py b/modules/francetelevisions/pages.py index e0921c7c1b..ef9ac05e46 100644 --- a/modules/francetelevisions/pages.py +++ b/modules/francetelevisions/pages.py @@ -22,11 +22,11 @@ from datetime import timedelta -from weboob.browser2.page import HTMLPage, method, JsonPage -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.filters.standard import Filter, CleanText, Regexp, Format, DateTime, Env, Duration -from weboob.browser2.filters.html import Link, Attr, XPath -from weboob.browser2.filters.json import Dict +from weboob.browser.pages import HTMLPage, JsonPage +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.filters.standard import Filter, CleanText, Regexp, Format, DateTime, Env, Duration +from weboob.browser.filters.html import Link, Attr, XPath +from weboob.browser.filters.json import Dict class DurationPluzz(Filter): diff --git a/modules/freemobile/browser.py b/modules/freemobile/browser.py index 5de18f3cd8..1e04a67d0c 100644 --- a/modules/freemobile/browser.py +++ b/modules/freemobile/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword from .pages import HomePage, LoginPage, HistoryPage, DetailsPage __all__ = ['Freemobile'] diff --git a/modules/freemobile/pages/history.py b/modules/freemobile/pages/history.py index c6ea5f91d1..0488f8c5e8 100644 --- a/modules/freemobile/pages/history.py +++ b/modules/freemobile/pages/history.py @@ -24,11 +24,11 @@ from datetime import datetime from decimal import Decimal -from weboob.browser2.page import HTMLPage, method, LoggedPage -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.filters.standard import Date, CleanText, Filter,\ +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.filters.standard import Date, CleanText, Filter,\ CleanDecimal, Regexp, Field, DateTime, Format, Env -from weboob.browser2.filters.html import Attr +from weboob.browser.filters.html import Attr from weboob.capabilities.bill import Detail, Bill @@ -39,6 +39,8 @@ def filter(self, txt): class BadUTF8Page(HTMLPage): def __init__(self, browser, response, *args, **kwargs): + # XXX it is volontary the parent class of HTMLPage's constructor which + # is called, but that's ugly. super(HTMLPage, self).__init__(browser, response, *args, **kwargs) parser = html.HTMLParser(encoding='UTF-8') self.doc = html.parse(StringIO(response.content), parser) diff --git a/modules/freemobile/pages/homepage.py b/modules/freemobile/pages/homepage.py index 0cf37e71fe..5efe0854ec 100644 --- a/modules/freemobile/pages/homepage.py +++ b/modules/freemobile/pages/homepage.py @@ -19,10 +19,9 @@ from .history import BadUTF8Page from weboob.capabilities.bill import Subscription -from weboob.browser2.page import method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, Field, Format, Filter -from weboob.browser2.filters.html import Attr +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, Field, Format, Filter +from weboob.browser.filters.html import Attr class GetID(Filter): diff --git a/modules/freemobile/pages/login.py b/modules/freemobile/pages/login.py index b8ac832571..8aa04c6c07 100644 --- a/modules/freemobile/pages/login.py +++ b/modules/freemobile/pages/login.py @@ -22,7 +22,7 @@ from StringIO import StringIO from PIL import Image -from weboob.browser2.page import HTMLPage +from weboob.browser.pages import HTMLPage class FreeKeyboard(object): diff --git a/modules/ganassurances/browser.py b/modules/ganassurances/browser.py index 8251fc101b..e33af36cce 100644 --- a/modules/ganassurances/browser.py +++ b/modules/ganassurances/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountsPage, TransactionsPage diff --git a/modules/ganassurances/pages.py b/modules/ganassurances/pages.py index 61311399e9..160e3df295 100644 --- a/modules/ganassurances/pages.py +++ b/modules/ganassurances/pages.py @@ -21,7 +21,7 @@ from decimal import Decimal import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/gazelle/browser.py b/modules/gazelle/browser.py index d0247afa30..42044cdcca 100644 --- a/modules/gazelle/browser.py +++ b/modules/gazelle/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages.index import IndexPage, LoginPage from .pages.torrents import TorrentsPage diff --git a/modules/gazelle/pages/base.py b/modules/gazelle/pages/base.py index 804993b3ad..d210dec613 100644 --- a/modules/gazelle/pages/base.py +++ b/modules/gazelle/pages/base.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import BrowserUnavailable, Page as _BasePage +from weboob.deprecated.browser import BrowserUnavailable, Page as _BasePage class BasePage(_BasePage): diff --git a/modules/gazelle/pages/index.py b/modules/gazelle/pages/index.py index 11625754c3..3d4aac623c 100644 --- a/modules/gazelle/pages/index.py +++ b/modules/gazelle/pages/index.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import BrowserIncorrectPassword, BrowserBanned +from weboob.deprecated.browser import BrowserIncorrectPassword, BrowserBanned from .base import BasePage diff --git a/modules/gdcvault/browser.py b/modules/gdcvault/browser.py index 6b6c27838c..73fd15a537 100644 --- a/modules/gdcvault/browser.py +++ b/modules/gdcvault/browser.py @@ -20,9 +20,9 @@ import urllib -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrowserUnavailable,\ +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrowserUnavailable,\ BrowserBanned -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser.decorators import id2url #from .pages.index import IndexPage from .pages import VideoPage, IndexPage, SearchPage diff --git a/modules/gdcvault/pages.py b/modules/gdcvault/pages.py index 6a33ee62a9..d8ddac25ac 100644 --- a/modules/gdcvault/pages.py +++ b/modules/gdcvault/pages.py @@ -19,7 +19,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import urllib import re @@ -28,7 +28,7 @@ from weboob.capabilities.base import NotAvailable from weboob.capabilities.image import BaseImage -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError #HACK from urllib2 import HTTPError diff --git a/modules/gdfsuez/browser.py b/modules/gdfsuez/browser.py index d771f9445f..6a6d74adfe 100644 --- a/modules/gdfsuez/browser.py +++ b/modules/gdfsuez/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . import StringIO -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, HomePage, AccountPage, TimeoutPage, HistoryPage, PdfPage __all__ = ['GdfSuez'] diff --git a/modules/gdfsuez/pages/history.py b/modules/gdfsuez/pages/history.py index 0b2bff9d27..fe3152510a 100644 --- a/modules/gdfsuez/pages/history.py +++ b/modules/gdfsuez/pages/history.py @@ -26,7 +26,7 @@ from datetime import date from decimal import Decimal -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.base import NotAvailable from weboob.capabilities.bill import Detail, Bill diff --git a/modules/gdfsuez/pages/homepage.py b/modules/gdfsuez/pages/homepage.py index 0f42e17ec2..8164dbea15 100644 --- a/modules/gdfsuez/pages/homepage.py +++ b/modules/gdfsuez/pages/homepage.py @@ -19,7 +19,7 @@ from datetime import date -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bill import Subscription diff --git a/modules/geolocip/module.py b/modules/geolocip/module.py index 6835053899..d529635c0f 100644 --- a/modules/geolocip/module.py +++ b/modules/geolocip/module.py @@ -21,7 +21,7 @@ from weboob.capabilities.geolocip import CapGeolocIp, IpLocation from weboob.tools.backend import Module -from weboob.tools.browser import Browser, BrowserUnavailable +from weboob.deprecated.browser import Browser, BrowserUnavailable __all__ = ['GeolocIpModule'] diff --git a/modules/github/browser.py b/modules/github/browser.py index 679df2d0d4..cb8055d4a7 100644 --- a/modules/github/browser.py +++ b/modules/github/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.tools.json import json as json_module from base64 import b64encode import datetime diff --git a/modules/googletranslate/browser.py b/modules/googletranslate/browser.py index 82102e606f..2d27552801 100644 --- a/modules/googletranslate/browser.py +++ b/modules/googletranslate/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import TranslatePage diff --git a/modules/googletranslate/pages.py b/modules/googletranslate/pages.py index d850b4fb9a..fe3530885c 100644 --- a/modules/googletranslate/pages.py +++ b/modules/googletranslate/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class TranslatePage(Page): diff --git a/modules/grooveshark/browser.py b/modules/grooveshark/browser.py index 5eb6d31d7e..3a796cd5ce 100644 --- a/modules/grooveshark/browser.py +++ b/modules/grooveshark/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.tools.json import json as simplejson from weboob.capabilities.audio import BaseAudio, Album, Playlist from weboob.capabilities.image import BaseImage diff --git a/modules/groupamaes/browser.py b/modules/groupamaes/browser.py index 47992e87cd..9efb780a0b 100644 --- a/modules/groupamaes/browser.py +++ b/modules/groupamaes/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword from .pages import LoginPage, LoginErrorPage, AvoirPage, OperationsTraiteesPage, OperationsFuturesPage diff --git a/modules/groupamaes/pages.py b/modules/groupamaes/pages.py index f6757bdef0..537aa63d54 100644 --- a/modules/groupamaes/pages.py +++ b/modules/groupamaes/pages.py @@ -18,9 +18,9 @@ # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method, LoggedPage -from weboob.browser2.elements import TableElement, ItemElement -from weboob.browser2.filters.standard import CleanText, CleanDecimal, TableCell, Date +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import TableElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, CleanDecimal, TableCell, Date from weboob.capabilities.bank import Account, Transaction from weboob.tools.date import LinearDateGuesser diff --git a/modules/guerrillamail/browser.py b/modules/guerrillamail/browser.py index 49eaef824d..e07c408176 100644 --- a/modules/guerrillamail/browser.py +++ b/modules/guerrillamail/browser.py @@ -18,9 +18,9 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.tools.date import datetime -from weboob.tools.parsers.jsonparser import json +from weboob.deprecated.browser.parsers.jsonparser import json from urllib import urlencode #from .pages import Page1, Page2 diff --git a/modules/hds/browser.py b/modules/hds/browser.py index 2c29e21e50..2bc406c1ab 100644 --- a/modules/hds/browser.py +++ b/modules/hds/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import ValidationPage, HomePage, HistoryPage, StoryPage, AuthorPage diff --git a/modules/hds/pages.py b/modules/hds/pages.py index 63f80455ca..5a12538a81 100644 --- a/modules/hds/pages.py +++ b/modules/hds/pages.py @@ -21,7 +21,7 @@ import datetime import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ValidationPage(Page): diff --git a/modules/hellobank/browser.py b/modules/hellobank/browser.py index a02028590d..e1aa66f688 100644 --- a/modules/hellobank/browser.py +++ b/modules/hellobank/browser.py @@ -22,7 +22,7 @@ import mechanize from datetime import datetime -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrowserPasswordExpired +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrowserPasswordExpired from weboob.capabilities.bank import TransferError, Transfer from .perso.accounts_list import AccountsList, AccountPrelevement diff --git a/modules/hellobank/perso/accounts_list.py b/modules/hellobank/perso/accounts_list.py index c567ffb08d..246478bdf9 100644 --- a/modules/hellobank/perso/accounts_list.py +++ b/modules/hellobank/perso/accounts_list.py @@ -21,7 +21,7 @@ from decimal import Decimal from weboob.capabilities.bank import Account -from weboob.tools.browser import Page, BrowserPasswordExpired +from weboob.deprecated.browser import Page, BrowserPasswordExpired from weboob.tools.json import json diff --git a/modules/hellobank/perso/login.py b/modules/hellobank/perso/login.py index 9d35a8cd01..f721b54c00 100644 --- a/modules/hellobank/perso/login.py +++ b/modules/hellobank/perso/login.py @@ -22,7 +22,7 @@ import time import re -from weboob.tools.browser import Page, BrowserUnavailable +from weboob.deprecated.browser import Page, BrowserUnavailable from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError diff --git a/modules/hellobank/perso/messages.py b/modules/hellobank/perso/messages.py index 39c6338cf4..f48ef1fb53 100644 --- a/modules/hellobank/perso/messages.py +++ b/modules/hellobank/perso/messages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.capabilities.messages import Message, Thread from weboob.capabilities.base import NotLoaded from weboob.tools.capabilities.messages.genericArticle import try_drop_tree diff --git a/modules/hellobank/perso/transactions.py b/modules/hellobank/perso/transactions.py index 4086e148fb..32e01b0637 100644 --- a/modules/hellobank/perso/transactions.py +++ b/modules/hellobank/perso/transactions.py @@ -21,7 +21,7 @@ import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/hellobank/perso/transfer.py b/modules/hellobank/perso/transfer.py index 2609684670..a033ee8231 100644 --- a/modules/hellobank/perso/transfer.py +++ b/modules/hellobank/perso/transfer.py @@ -21,7 +21,7 @@ import re -from weboob.tools.browser import Page, BrowserPasswordExpired +from weboob.deprecated.browser import Page, BrowserPasswordExpired from weboob.tools.ordereddict import OrderedDict from weboob.capabilities.bank import TransferError diff --git a/modules/hsbc/browser.py b/modules/hsbc/browser.py index db3e803d08..c92f753486 100644 --- a/modules/hsbc/browser.py +++ b/modules/hsbc/browser.py @@ -22,8 +22,8 @@ from datetime import timedelta from weboob.tools.date import LinearDateGuesser -from weboob.core.exceptions import BrowserIncorrectPassword -from weboob.browser2 import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login from .pages import AccountsPage, CBOperationPage, CPTOperationPage, LoginPage diff --git a/modules/hsbc/pages.py b/modules/hsbc/pages.py index 59197559d2..2a82fb6716 100644 --- a/modules/hsbc/pages.py +++ b/modules/hsbc/pages.py @@ -24,11 +24,11 @@ from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction -from weboob.core.exceptions import BrowserIncorrectPassword -from weboob.browser2.elements import ListElement, ItemElement, SkipItem -from weboob.browser2.page import HTMLPage, method, LoggedPage, pagination -from weboob.browser2.filters.standard import Filter, Env, CleanText, CleanDecimal, Field, DateGuesser, TableCell -from weboob.browser2.filters.html import Link +from weboob.exceptions import BrowserIncorrectPassword +from weboob.browser.elements import ListElement, ItemElement, SkipItem, method +from weboob.browser.pages import HTMLPage, LoggedPage, pagination +from weboob.browser.filters.standard import Filter, Env, CleanText, CleanDecimal, Field, DateGuesser, TableCell +from weboob.browser.filters.html import Link class Transaction(FrenchTransaction): diff --git a/modules/hybride/browser.py b/modules/hybride/browser.py index fa86316a86..d16c0e86cf 100644 --- a/modules/hybride/browser.py +++ b/modules/hybride/browser.py @@ -19,7 +19,8 @@ from .pages import ProgramPage, EventPage -from weboob.browser2 import PagesBrowser, URL, Firefox +from weboob.browser import PagesBrowser, URL +from weboob.browser.profiles import Firefox __all__ = ['HybrideBrowser'] diff --git a/modules/hybride/pages.py b/modules/hybride/pages.py index a290992bb1..8d06c5e186 100644 --- a/modules/hybride/pages.py +++ b/modules/hybride/pages.py @@ -23,10 +23,10 @@ import weboob.tools.date as date_util import re -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ItemElement, SkipItem, ListElement -from weboob.browser2.filters.standard import Filter, CleanText, Env -from weboob.browser2.filters.html import Link +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ItemElement, SkipItem, ListElement, method +from weboob.browser.filters.standard import Filter, CleanText, Env +from weboob.browser.filters.html import Link def format_date(date): @@ -41,7 +41,7 @@ def filter(self, text): class CombineDate(Filter): - def filter(sel, text): + def filter(self, text): return datetime.combine(format_date(text), time.max) diff --git a/modules/imdb/browser.py b/modules/imdb/browser.py index efb1a6333f..027f4987bb 100644 --- a/modules/imdb/browser.py +++ b/modules/imdb/browser.py @@ -20,7 +20,7 @@ import re from HTMLParser import HTMLParser -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from weboob.capabilities.base import NotAvailable, NotLoaded from weboob.capabilities.cinema import Movie, Person from weboob.tools.json import json diff --git a/modules/imdb/pages.py b/modules/imdb/pages.py index a3e1755b91..6a60f03df4 100644 --- a/modules/imdb/pages.py +++ b/modules/imdb/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.cinema import Person, Movie from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.html import html2text from datetime import datetime import re diff --git a/modules/imgur/module.py b/modules/imgur/module.py index 53493a0097..07712532cd 100644 --- a/modules/imgur/module.py +++ b/modules/imgur/module.py @@ -22,7 +22,7 @@ from weboob.capabilities.paste import CapPaste, BasePaste from weboob.tools.capabilities.paste import image_mime from weboob.capabilities.base import StringField -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser from urllib import urlencode import re diff --git a/modules/ina/browser.py b/modules/ina/browser.py index 04e6c324ae..30755f7e3a 100644 --- a/modules/ina/browser.py +++ b/modules/ina/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .pages.video import VideoPage from .pages.search import SearchPage diff --git a/modules/ina/pages/search.py b/modules/ina/pages/search.py index f210a5499a..834cc58cdd 100644 --- a/modules/ina/pages/search.py +++ b/modules/ina/pages/search.py @@ -21,7 +21,7 @@ import datetime import re -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.capabilities.image import BaseImage from ..video import InaVideo diff --git a/modules/ina/pages/video.py b/modules/ina/pages/video.py index 5d7f8be187..15572d1d02 100644 --- a/modules/ina/pages/video.py +++ b/modules/ina/pages/video.py @@ -23,7 +23,7 @@ from weboob.capabilities import NotAvailable from weboob.capabilities.image import BaseImage -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from ..video import InaVideo diff --git a/modules/indeed/browser.py b/modules/indeed/browser.py index 7934a2af61..fa9522cce4 100644 --- a/modules/indeed/browser.py +++ b/modules/indeed/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import SearchPage, AdvertPage diff --git a/modules/indeed/pages.py b/modules/indeed/pages.py index b5e7c1b7f9..c96adc8cce 100644 --- a/modules/indeed/pages.py +++ b/modules/indeed/pages.py @@ -19,10 +19,10 @@ from datetime import timedelta, datetime import re -from weboob.browser2.page import HTMLPage, method, pagination -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import Filter, CleanText, Regexp, Format, Env -from weboob.browser2.filters.html import CleanHTML, Attr +from weboob.browser.pages import HTMLPage, pagination +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import Filter, CleanText, Regexp, Format, Env +from weboob.browser.filters.html import CleanHTML, Attr from weboob.capabilities.job import BaseJobAdvert diff --git a/modules/ing/browser.py b/modules/ing/browser.py index 29183c375f..239b89a407 100644 --- a/modules/ing/browser.py +++ b/modules/ing/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . import hashlib -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword, ParseError +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword, ParseError from weboob.capabilities.bank import Account, TransferError from .pages import AccountsList, LoginPage, TitrePage, TitreHistory,\ diff --git a/modules/ing/pages/accounts_list.py b/modules/ing/pages/accounts_list.py index a1aca2d12d..c6693c55ff 100644 --- a/modules/ing/pages/accounts_list.py +++ b/modules/ing/pages/accounts_list.py @@ -24,10 +24,10 @@ from weboob.capabilities.bank import Account from weboob.capabilities.base import NotAvailable -from weboob.browser2.page import HTMLPage, LoggedPage, method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, CleanDecimal, Filter, Field, MultiFilter, Date, Lower -from weboob.browser2.filters.html import Attr +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, CleanDecimal, Filter, Field, MultiFilter, Date, Lower +from weboob.browser.filters.html import Attr from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/ing/pages/bills.py b/modules/ing/pages/bills.py index 26350dea18..2d60dd0441 100644 --- a/modules/ing/pages/bills.py +++ b/modules/ing/pages/bills.py @@ -18,11 +18,10 @@ # along with weboob. If not, see . from weboob.capabilities.bill import Bill, Subscription -from weboob.browser2 import HTMLPage, LoggedPage -from weboob.browser2.filters.standard import Filter, CleanText, Format, Field, Env -from weboob.browser2.filters.html import Attr -from weboob.browser2.page import method, pagination -from weboob.browser2.elements import ListElement, ItemElement +from weboob.browser.pages import HTMLPage, LoggedPage, pagination +from weboob.browser.filters.standard import Filter, CleanText, Format, Field, Env +from weboob.browser.filters.html import Attr +from weboob.browser.elements import ListElement, ItemElement, method class FormId(Filter): diff --git a/modules/ing/pages/login.py b/modules/ing/pages/login.py index efb89a184c..6c0462015a 100644 --- a/modules/ing/pages/login.py +++ b/modules/ing/pages/login.py @@ -19,9 +19,9 @@ from StringIO import StringIO -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.exceptions import BrowserIncorrectPassword from weboob.tools.captcha.virtkeyboard import VirtKeyboard -from weboob.browser2.page import HTMLPage +from weboob.browser.pages import HTMLPage class INGVirtKeyboard(VirtKeyboard): diff --git a/modules/ing/pages/titre.py b/modules/ing/pages/titre.py index 8d54779057..c91baebcc1 100644 --- a/modules/ing/pages/titre.py +++ b/modules/ing/pages/titre.py @@ -21,9 +21,9 @@ from decimal import Decimal from weboob.capabilities.bank import Investment -from weboob.browser2.page import RawPage, HTMLPage, method, LoggedPage -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanDecimal, CleanText, Date +from weboob.browser.pages import RawPage, HTMLPage, LoggedPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanDecimal, CleanText, Date from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/ing/pages/transfer.py b/modules/ing/pages/transfer.py index 6b3f902489..6412c8b651 100644 --- a/modules/ing/pages/transfer.py +++ b/modules/ing/pages/transfer.py @@ -18,10 +18,10 @@ # along with weboob. If not, see . from weboob.capabilities.bank import Recipient, AccountNotFound, Transfer -from weboob.browser2.page import HTMLPage, LoggedPage, method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, CleanDecimal, Format -from weboob.browser2.filters.html import Attr +from weboob.browser.pages import HTMLPage, LoggedPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, CleanDecimal, Format +from weboob.browser.filters.html import Attr from .login import INGVirtKeyboard diff --git a/modules/inrocks/browser.py b/modules/inrocks/browser.py index d59f55048c..d277b014d2 100644 --- a/modules/inrocks/browser.py +++ b/modules/inrocks/browser.py @@ -20,7 +20,7 @@ from .pages.article import ArticlePage from .pages.inrockstv import InrocksTvPage -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser class NewspaperInrocksBrowser(Browser): diff --git a/modules/inrocks/pages/article.py b/modules/inrocks/pages/article.py index 5c9dab3191..83491a94ed 100644 --- a/modules/inrocks/pages/article.py +++ b/modules/inrocks/pages/article.py @@ -18,7 +18,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from weboob.tools.capabilities.messages.genericArticle import GenericNewsPage, try_remove, \ try_remove_from_selector_list, \ drop_comments, NoneMainDiv diff --git a/modules/ipinfodb/module.py b/modules/ipinfodb/module.py index 0d659a169a..9e95cfad92 100644 --- a/modules/ipinfodb/module.py +++ b/modules/ipinfodb/module.py @@ -21,7 +21,7 @@ from weboob.capabilities.geolocip import CapGeolocIp, IpLocation from weboob.tools.backend import Module -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser __all__ = ['IpinfodbModule'] diff --git a/modules/izneo/module.py b/modules/izneo/module.py index 9873f68217..73cff39eae 100644 --- a/modules/izneo/module.py +++ b/modules/izneo/module.py @@ -24,7 +24,7 @@ from weboob.capabilities.gallery import CapGallery, BaseGallery, BaseImage from weboob.tools.json import json from weboob.tools.backend import Module -from weboob.tools.browser import Browser, Page +from weboob.deprecated.browser import Browser, Page __all__ = ['IzneoModule'] diff --git a/modules/jacquieetmichel/browser.py b/modules/jacquieetmichel/browser.py index 1d94b2eb32..0f4feadb8c 100644 --- a/modules/jacquieetmichel/browser.py +++ b/modules/jacquieetmichel/browser.py @@ -19,8 +19,8 @@ import urllib -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .video import JacquieEtMichelVideo from .pages import VideoPage, ResultsPage diff --git a/modules/jacquieetmichel/pages.py b/modules/jacquieetmichel/pages.py index e26f6499c7..2163cd2780 100644 --- a/modules/jacquieetmichel/pages.py +++ b/modules/jacquieetmichel/pages.py @@ -22,7 +22,7 @@ from weboob.capabilities.base import NotAvailable from weboob.capabilities.image import BaseImage -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.tools.misc import to_unicode from .video import JacquieEtMichelVideo diff --git a/modules/jcvelaux/browser.py b/modules/jcvelaux/browser.py index aad77462c7..ec11bb82b4 100644 --- a/modules/jcvelaux/browser.py +++ b/modules/jcvelaux/browser.py @@ -19,7 +19,7 @@ import datetime -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser __all__ = ['VelibBrowser'] diff --git a/modules/jvmalin/browser.py b/modules/jvmalin/browser.py index c47dc7914d..d01934f73f 100644 --- a/modules/jvmalin/browser.py +++ b/modules/jvmalin/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import RoadmapSearchPage, RoadmapResultsPage, RoadmapPage, RoadmapAmbiguity diff --git a/modules/jvmalin/pages.py b/modules/jvmalin/pages.py index b5a334dbc4..640fb4f0f9 100644 --- a/modules/jvmalin/pages.py +++ b/modules/jvmalin/pages.py @@ -5,8 +5,8 @@ from weboob.capabilities.travel import RoadmapError from weboob.tools.misc import to_unicode -from weboob.tools.mech import ClientForm -from weboob.tools.browser import Page +from weboob.deprecated.mech import ClientForm +from weboob.deprecated.browser import Page class RoadmapAmbiguity(RoadmapError): diff --git a/modules/kickass/browser.py b/modules/kickass/browser.py index 88688d3c8d..c7019839a1 100644 --- a/modules/kickass/browser.py +++ b/modules/kickass/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import TorrentsPage, TorrentPage diff --git a/modules/kickass/pages.py b/modules/kickass/pages.py index dd08004a08..c1ab540d6d 100644 --- a/modules/kickass/pages.py +++ b/modules/kickass/pages.py @@ -22,7 +22,7 @@ from weboob.capabilities.torrent import Torrent from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.misc import get_bytes_size diff --git a/modules/lacentrale/browser.py b/modules/lacentrale/browser.py index bd442e39dc..314167e6c3 100644 --- a/modules/lacentrale/browser.py +++ b/modules/lacentrale/browser.py @@ -20,7 +20,7 @@ import re -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import MainPage, ListingAutoPage, AnnoncePage diff --git a/modules/lacentrale/pages.py b/modules/lacentrale/pages.py index bf05c2ca98..ccc61557c2 100644 --- a/modules/lacentrale/pages.py +++ b/modules/lacentrale/pages.py @@ -21,7 +21,7 @@ from decimal import Decimal import re -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities import NotAvailable, NotLoaded from weboob.capabilities.pricecomparison import Product, Price, Shop diff --git a/modules/lcl/browser.py b/modules/lcl/browser.py index f4765f1493..9fb2d79d70 100644 --- a/modules/lcl/browser.py +++ b/modules/lcl/browser.py @@ -21,7 +21,7 @@ from urlparse import urlsplit, parse_qsl from mechanize import Cookie -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import SkipPage, LoginPage, AccountsPage, AccountHistoryPage, \ CBListPage, CBHistoryPage, ContractsPage diff --git a/modules/lcl/enterprise/browser.py b/modules/lcl/enterprise/browser.py index df4790441d..a0e2e563c0 100644 --- a/modules/lcl/enterprise/browser.py +++ b/modules/lcl/enterprise/browser.py @@ -19,7 +19,7 @@ from urllib import urlencode -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import HomePage, MessagesPage, LogoutPage, LogoutOkPage, \ AlreadyConnectedPage, ExpiredPage, MovementsPage, RootPage diff --git a/modules/lcl/enterprise/pages.py b/modules/lcl/enterprise/pages.py index ec29b8ffd3..ac479a47f4 100644 --- a/modules/lcl/enterprise/pages.py +++ b/modules/lcl/enterprise/pages.py @@ -20,7 +20,7 @@ from decimal import Decimal from weboob.capabilities.bank import Account -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.capabilities.bank.transactions import FrenchTransaction from ..pages import Transaction diff --git a/modules/lcl/pages.py b/modules/lcl/pages.py index 5d4b551dae..037b7102df 100644 --- a/modules/lcl/pages.py +++ b/modules/lcl/pages.py @@ -26,7 +26,7 @@ from weboob.capabilities.bank import Account -from weboob.tools.browser import Page, BrowserUnavailable +from weboob.deprecated.browser import Page, BrowserUnavailable from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError from weboob.tools.capabilities.bank.transactions import FrenchTransaction diff --git a/modules/leboncoin/browser.py b/modules/leboncoin/browser.py index 7b47dc4e2d..b63ead107f 100644 --- a/modules/leboncoin/browser.py +++ b/modules/leboncoin/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from weboob.capabilities.housing import Query from .pages import CityListPage, HousingListPage, HousingPage diff --git a/modules/leboncoin/pages.py b/modules/leboncoin/pages.py index b23a1c6fd6..944f2b1fb8 100644 --- a/modules/leboncoin/pages.py +++ b/modules/leboncoin/pages.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . from decimal import Decimal -from weboob.browser2.page import HTMLPage, method, pagination -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.filters.standard import CleanText, Regexp, CleanDecimal, Env, DateTime -from weboob.browser2.filters.html import Attr, Link +from weboob.browser.pages import HTMLPage, pagination +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.filters.standard import CleanText, Regexp, CleanDecimal, Env, DateTime +from weboob.browser.filters.html import Attr, Link from weboob.capabilities.housing import City, Housing, HousingPhoto from datetime import date, timedelta from weboob.tools.date import DATE_TRANSLATE_FR, LinearDateGuesser diff --git a/modules/leclercmobile/browser.py b/modules/leclercmobile/browser.py index c0d9d0cfbe..e0091d71bd 100644 --- a/modules/leclercmobile/browser.py +++ b/modules/leclercmobile/browser.py @@ -20,7 +20,7 @@ import time import StringIO -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import HomePage, LoginPage, HistoryPage, PdfPage from weboob.capabilities.bill import Detail from weboob.capabilities.base import NotAvailable diff --git a/modules/leclercmobile/pages/history.py b/modules/leclercmobile/pages/history.py index b46c188544..5e3f0d1d55 100644 --- a/modules/leclercmobile/pages/history.py +++ b/modules/leclercmobile/pages/history.py @@ -26,7 +26,7 @@ from datetime import datetime, date, time from decimal import Decimal -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bill import Detail, Bill diff --git a/modules/leclercmobile/pages/homepage.py b/modules/leclercmobile/pages/homepage.py index e5565821fd..c3002a5ac2 100644 --- a/modules/leclercmobile/pages/homepage.py +++ b/modules/leclercmobile/pages/homepage.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from weboob.capabilities.bill import Subscription -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class HomePage(Page): diff --git a/modules/leclercmobile/pages/login.py b/modules/leclercmobile/pages/login.py index d44a4a95ee..90faa7d391 100644 --- a/modules/leclercmobile/pages/login.py +++ b/modules/leclercmobile/pages/login.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . import StringIO -from weboob.tools.browser import Page -from weboob.tools.mech import ClientForm +from weboob.deprecated.browser import Page +from weboob.deprecated.mech import ClientForm class LoginPage(Page): diff --git a/modules/lefigaro/browser.py b/modules/lefigaro/browser.py index 7b31c18343..9ff146156e 100644 --- a/modules/lefigaro/browser.py +++ b/modules/lefigaro/browser.py @@ -20,7 +20,7 @@ from .pages.article import ArticlePage, ActuPage from .pages.flashactu import FlashActuPage -from weboob.tools.browser import Browser, Page +from weboob.deprecated.browser import Browser, Page class IndexPage(Page): diff --git a/modules/liberation/browser.py b/modules/liberation/browser.py index 99e284a4c8..cc473db8d9 100644 --- a/modules/liberation/browser.py +++ b/modules/liberation/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from .pages.article import ArticlePage -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser class NewspaperLibeBrowser(Browser): diff --git a/modules/lolix/browser.py b/modules/lolix/browser.py index e68ac0dc74..cf195e2820 100644 --- a/modules/lolix/browser.py +++ b/modules/lolix/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser.decorators import id2url -from weboob.tools.browser import Browser +from weboob.deprecated.browser.decorators import id2url +from weboob.deprecated.browser import Browser from .job import LolixJobAdvert from .pages import SearchPage, AdvertPage import urllib diff --git a/modules/lolix/pages.py b/modules/lolix/pages.py index 22d993d4a5..6d3442c244 100644 --- a/modules/lolix/pages.py +++ b/modules/lolix/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import dateutil.parser import re diff --git a/modules/lutim/browser.py b/modules/lutim/browser.py index 07bcf3347d..90f119c1eb 100644 --- a/modules/lutim/browser.py +++ b/modules/lutim/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from StringIO import StringIO import re diff --git a/modules/lutim/pages.py b/modules/lutim/pages.py index 2cf454ac89..bb6d407043 100644 --- a/modules/lutim/pages.py +++ b/modules/lutim/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import re diff --git a/modules/mailinator/browser.py b/modules/mailinator/browser.py index e79ff440fb..e24985d5f4 100644 --- a/modules/mailinator/browser.py +++ b/modules/mailinator/browser.py @@ -18,9 +18,9 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserBanned +from weboob.deprecated.browser import Browser, BrowserBanned from weboob.tools.date import datetime -from weboob.tools.parsers.jsonparser import json +from weboob.deprecated.browser.parsers.jsonparser import json import lxml.html import time diff --git a/modules/mareeinfo/browser.py b/modules/mareeinfo/browser.py index a3ea820dab..49c7543646 100644 --- a/modules/mareeinfo/browser.py +++ b/modules/mareeinfo/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import IndexPage diff --git a/modules/mareeinfo/pages.py b/modules/mareeinfo/pages.py index a4bb8e64df..f8c5a0e165 100644 --- a/modules/mareeinfo/pages.py +++ b/modules/mareeinfo/pages.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, DateTime, CleanDecimal, Regexp -from weboob.browser2.filters.html import Link, XPath +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, DateTime, CleanDecimal, Regexp +from weboob.browser.filters.html import Link, XPath from weboob.capabilities.gauge import Gauge, GaugeMeasure, GaugeSensor from datetime import timedelta import re diff --git a/modules/marmiton/browser.py b/modules/marmiton/browser.py index dcceb36e81..10a1637aa0 100644 --- a/modules/marmiton/browser.py +++ b/modules/marmiton/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import RecipePage, ResultsPage diff --git a/modules/marmiton/pages.py b/modules/marmiton/pages.py index 9ef383fd52..212770f695 100644 --- a/modules/marmiton/pages.py +++ b/modules/marmiton/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.recipe import Recipe, Comment from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ResultsPage(Page): diff --git a/modules/mediawiki/browser.py b/modules/mediawiki/browser.py index 66ec23f1f0..fd2cca71a1 100644 --- a/modules/mediawiki/browser.py +++ b/modules/mediawiki/browser.py @@ -22,7 +22,7 @@ import datetime import re -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.tools.json import json as simplejson from weboob.capabilities.content import Revision diff --git a/modules/meteofrance/browser.py b/modules/meteofrance/browser.py index e6188f1559..6cecc8395f 100644 --- a/modules/meteofrance/browser.py +++ b/modules/meteofrance/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages.meteo import WeatherPage, SearchCitiesPage from weboob.capabilities.weather import CityNotFound diff --git a/modules/meteofrance/pages/meteo.py b/modules/meteofrance/pages/meteo.py index 4e9736a0f8..50bcc1ecdb 100644 --- a/modules/meteofrance/pages/meteo.py +++ b/modules/meteofrance/pages/meteo.py @@ -19,7 +19,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.weather import Forecast, Current, City import datetime diff --git a/modules/minutes20/browser.py b/modules/minutes20/browser.py index 650d86c128..96760ddbe2 100644 --- a/modules/minutes20/browser.py +++ b/modules/minutes20/browser.py @@ -20,7 +20,7 @@ from .pages.article import ArticlePage from .pages.simple import SimplePage -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .tools import id2url diff --git a/modules/monster/browser.py b/modules/monster/browser.py index 0bd351a5e9..6fde3c3c8c 100644 --- a/modules/monster/browser.py +++ b/modules/monster/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . import urllib -from weboob.tools.browser.decorators import id2url -from weboob.tools.browser import Browser +from weboob.deprecated.browser.decorators import id2url +from weboob.deprecated.browser import Browser from .pages import SearchPage, AdvertPage from .job import MonsterJobAdvert diff --git a/modules/monster/pages.py b/modules/monster/pages.py index 77a2cfc2d9..8f904e089a 100644 --- a/modules/monster/pages.py +++ b/modules/monster/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.html import html2text import re from datetime import datetime, time, timedelta diff --git a/modules/nectarine/browser.py b/modules/nectarine/browser.py index 29817bb635..a188c8197c 100644 --- a/modules/nectarine/browser.py +++ b/modules/nectarine/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import LivePage, StreamsPage __all__ = ['NectarineBrowser'] diff --git a/modules/nectarine/pages.py b/modules/nectarine/pages.py index 1bf8ad5246..4bd930536e 100644 --- a/modules/nectarine/pages.py +++ b/modules/nectarine/pages.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.radio import Radio from weboob.capabilities.audiostream import BaseAudioStream from weboob.tools.capabilities.streaminfo import StreamInfo diff --git a/modules/nettokom/browser.py b/modules/nettokom/browser.py index aa6c876522..38e58042d7 100644 --- a/modules/nettokom/browser.py +++ b/modules/nettokom/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import HomePage, LoginPage, HistoryPage, DetailsPage, BillsPage __all__ = ['Nettokom'] diff --git a/modules/nettokom/pages/history.py b/modules/nettokom/pages/history.py index 1ded0b3658..dc25b9f386 100644 --- a/modules/nettokom/pages/history.py +++ b/modules/nettokom/pages/history.py @@ -21,7 +21,7 @@ from datetime import datetime, date, time from decimal import Decimal -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.bill import Detail diff --git a/modules/nettokom/pages/homepage.py b/modules/nettokom/pages/homepage.py index ef0cf930d3..0851c73971 100644 --- a/modules/nettokom/pages/homepage.py +++ b/modules/nettokom/pages/homepage.py @@ -19,7 +19,7 @@ from weboob.capabilities.bill import Subscription from weboob.tools.capabilities.bank.transactions import FrenchTransaction -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from datetime import date from decimal import Decimal diff --git a/modules/nettokom/pages/login.py b/modules/nettokom/pages/login.py index c66b542a19..f4a9218c09 100644 --- a/modules/nettokom/pages/login.py +++ b/modules/nettokom/pages/login.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class LoginPage(Page): diff --git a/modules/nihonnooto/browser.py b/modules/nihonnooto/browser.py index f67cb6ec63..d4346c446e 100644 --- a/modules/nihonnooto/browser.py +++ b/modules/nihonnooto/browser.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import LivePage, ProgramPage __all__ = ['NihonNoOtoBrowser'] diff --git a/modules/nihonnooto/pages.py b/modules/nihonnooto/pages.py index 8e035ba3be..06b6e58c8c 100644 --- a/modules/nihonnooto/pages.py +++ b/modules/nihonnooto/pages.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.radio import Radio from weboob.capabilities.audiostream import BaseAudioStream from weboob.tools.capabilities.streaminfo import StreamInfo diff --git a/modules/nolifetv/browser.py b/modules/nolifetv/browser.py index 83d6ebc512..86022343f4 100644 --- a/modules/nolifetv/browser.py +++ b/modules/nolifetv/browser.py @@ -18,11 +18,11 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword import urllib -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser.decorators import id2url from .video import NolifeTVVideo from .pages import VideoPage, VideoListPage, FamilyPage, AboPage, LoginPage, HomePage diff --git a/modules/nolifetv/pages.py b/modules/nolifetv/pages.py index 6fa629a36d..ed0835eb37 100644 --- a/modules/nolifetv/pages.py +++ b/modules/nolifetv/pages.py @@ -21,7 +21,7 @@ from weboob.capabilities.collection import Collection from weboob.capabilities.image import BaseImage -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import re from datetime import datetime, timedelta diff --git a/modules/nova/module.py b/modules/nova/module.py index a3100d7a18..a58e9d3004 100644 --- a/modules/nova/module.py +++ b/modules/nova/module.py @@ -25,8 +25,8 @@ from weboob.tools.capabilities.streaminfo import StreamInfo from weboob.capabilities.collection import CapCollection from weboob.tools.backend import Module -from weboob.tools.browser import StandardBrowser -from weboob.tools.parsers import get_parser +from weboob.deprecated.browser import StandardBrowser +from weboob.deprecated.browser.parsers import get_parser __all__ = ['NovaModule'] diff --git a/modules/okc/browser.py b/modules/okc/browser.py index be5e8043d9..5deb768f0d 100644 --- a/modules/okc/browser.py +++ b/modules/okc/browser.py @@ -19,7 +19,7 @@ import urllib -from weboob.tools.browser import Browser, Page +from weboob.deprecated.browser import Browser, Page from weboob.tools.ordereddict import OrderedDict from .pages import LoginPage, ThreadPage, MessagesPage, PostMessagePage, ProfilePage, PhotosPage, VisitsPage, QuickMatchPage, SentPage diff --git a/modules/okc/optim/profiles_walker.py b/modules/okc/optim/profiles_walker.py index 77f62fcb47..2610004d46 100644 --- a/modules/okc/optim/profiles_walker.py +++ b/modules/okc/optim/profiles_walker.py @@ -19,7 +19,7 @@ from random import randint -from weboob.tools.browser import BrowserUnavailable +from weboob.deprecated.browser import BrowserUnavailable from weboob.capabilities.dating import Optimization from weboob.tools.log import getLogger from weboob.tools.value import Value, ValuesDict diff --git a/modules/okc/pages.py b/modules/okc/pages.py index c79e79c116..d38a43b2fc 100644 --- a/modules/okc/pages.py +++ b/modules/okc/pages.py @@ -20,7 +20,7 @@ import re from datetime import datetime -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.ordereddict import OrderedDict from weboob.capabilities.contact import ProfileNode from weboob.tools.html import html2text diff --git a/modules/oney/browser.py b/modules/oney/browser.py index 088f8e3620..c4571276c8 100644 --- a/modules/oney/browser.py +++ b/modules/oney/browser.py @@ -19,8 +19,8 @@ from weboob.capabilities.bank import Account -from weboob.core.exceptions import BrowserIncorrectPassword -from weboob.browser2 import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login from .pages import LoginPage, IndexPage, OperationsPage diff --git a/modules/oney/pages.py b/modules/oney/pages.py index efb0f3ca43..0df4ec7474 100644 --- a/modules/oney/pages.py +++ b/modules/oney/pages.py @@ -25,10 +25,10 @@ from weboob.tools.capabilities.bank.transactions import FrenchTransaction from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError -from weboob.browser2.page import HTMLPage, method, LoggedPage, pagination -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import Env, CleanDecimal -from weboob.core.exceptions import ParseError +from weboob.browser.pages import HTMLPage, LoggedPage, pagination +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import Env, CleanDecimal +from weboob.exceptions import ParseError class Transaction(FrenchTransaction): diff --git a/modules/opacwebaloes/browser.py b/modules/opacwebaloes/browser.py index a65b19bc8f..6f944eaa78 100644 --- a/modules/opacwebaloes/browser.py +++ b/modules/opacwebaloes/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, HomePage, RentedPage, HistoryPage, BookedPage diff --git a/modules/opacwebaloes/pages.py b/modules/opacwebaloes/pages.py index 8a66f8af52..b52dad3cb7 100644 --- a/modules/opacwebaloes/pages.py +++ b/modules/opacwebaloes/pages.py @@ -19,8 +19,8 @@ from datetime import date from weboob.capabilities.library import Book -from weboob.tools.browser import Page, BrowserUnavailable -from weboob.tools.mech import ClientForm +from weboob.deprecated.browser import Page, BrowserUnavailable +from weboob.deprecated.mech import ClientForm class SkipPage(Page): diff --git a/modules/opensubtitles/browser.py b/modules/opensubtitles/browser.py index d82c4a4565..09ad828589 100644 --- a/modules/opensubtitles/browser.py +++ b/modules/opensubtitles/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from weboob.applications.suboob.suboob import LANGUAGE_CONV from .pages import SubtitlesPage, SearchPage, SubtitlePage diff --git a/modules/opensubtitles/pages.py b/modules/opensubtitles/pages.py index e14c9eada4..10da1b759a 100644 --- a/modules/opensubtitles/pages.py +++ b/modules/opensubtitles/pages.py @@ -21,7 +21,7 @@ from weboob.capabilities.subtitle import Subtitle from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.applications.suboob.suboob import LANGUAGE_CONV diff --git a/modules/orange/browser.py b/modules/orange/browser.py index 579743a37b..6c09879a21 100644 --- a/modules/orange/browser.py +++ b/modules/orange/browser.py @@ -23,7 +23,7 @@ from .pages import LoginPage, ComposePage, ConfirmPage -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword __all__ = ['OrangeBrowser'] diff --git a/modules/orange/pages/compose.py b/modules/orange/pages/compose.py index 01b5482379..3ef2cb457a 100644 --- a/modules/orange/pages/compose.py +++ b/modules/orange/pages/compose.py @@ -20,7 +20,7 @@ import re from weboob.capabilities.messages import CantSendMessage -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ConfirmPage(Page): diff --git a/modules/orange/pages/login.py b/modules/orange/pages/login.py index f433fc1679..bc15e38fc9 100644 --- a/modules/orange/pages/login.py +++ b/modules/orange/pages/login.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import urllib diff --git a/modules/ouifm/module.py b/modules/ouifm/module.py index 1124dc777e..4124da88a6 100644 --- a/modules/ouifm/module.py +++ b/modules/ouifm/module.py @@ -23,7 +23,7 @@ from weboob.tools.capabilities.streaminfo import StreamInfo from weboob.capabilities.collection import CapCollection from weboob.tools.backend import Module -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser from weboob.tools.misc import to_unicode diff --git a/modules/ovs/browser.py b/modules/ovs/browser.py index 1e62ea1d83..343d8d048f 100644 --- a/modules/ovs/browser.py +++ b/modules/ovs/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword -from weboob.tools.parsers.iparser import IParser +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser.parsers.iparser import IParser import BeautifulSoup from .pages import PagePrivateThreadsList, PagePrivateThread, PageLogin, PageIndex, DummyPage, PageUserProfile, PageCityList diff --git a/modules/ovs/module.py b/modules/ovs/module.py index 5be89f74db..e67950127b 100644 --- a/modules/ovs/module.py +++ b/modules/ovs/module.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from weboob.tools.backend import Module, BackendConfig -from weboob.tools.browser import BrowserForbidden +from weboob.deprecated.browser import BrowserForbidden from weboob.tools.value import Value, ValueBackendPassword from weboob.capabilities.messages import CapMessages, CapMessagesPost, Message from weboob.capabilities.contact import CapContact diff --git a/modules/ovs/pages.py b/modules/ovs/pages.py index b2292d5266..d1467b782b 100644 --- a/modules/ovs/pages.py +++ b/modules/ovs/pages.py @@ -22,7 +22,7 @@ import re import urllib from urlparse import urlsplit -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.messages import Message, Thread from weboob.capabilities.contact import Contact, ProfileNode from weboob.tools.date import parse_french_date diff --git a/modules/pap/browser.py b/modules/pap/browser.py index 21d7332e36..0816be731e 100644 --- a/modules/pap/browser.py +++ b/modules/pap/browser.py @@ -22,7 +22,7 @@ from weboob.tools.json import json -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.capabilities.housing import Query from .pages import SearchResultsPage, HousingPage diff --git a/modules/pap/pages.py b/modules/pap/pages.py index f185013f6b..30d744c248 100644 --- a/modules/pap/pages.py +++ b/modules/pap/pages.py @@ -22,7 +22,7 @@ from decimal import Decimal from dateutil.parser import parse as parse_date -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.base import NotAvailable from weboob.capabilities.housing import Housing diff --git a/modules/pariskiwi/browser.py b/modules/pariskiwi/browser.py index 21b5f35fbf..a40c9af56a 100644 --- a/modules/pariskiwi/browser.py +++ b/modules/pariskiwi/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import PageList, PageList2, PageEvent diff --git a/modules/pariskiwi/pages.py b/modules/pariskiwi/pages.py index 2b642c728d..7f962b9b14 100644 --- a/modules/pariskiwi/pages.py +++ b/modules/pariskiwi/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from datetime import datetime, time import json import lxml.html diff --git a/modules/parolesmania/browser.py b/modules/parolesmania/browser.py index 066bf707b6..501ef702de 100644 --- a/modules/parolesmania/browser.py +++ b/modules/parolesmania/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import SongResultsPage, SonglyricsPage, ArtistResultsPage, ArtistSongsPage diff --git a/modules/parolesmania/pages.py b/modules/parolesmania/pages.py index c3a25d0dfb..385c87d150 100644 --- a/modules/parolesmania/pages.py +++ b/modules/parolesmania/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.lyrics import SongLyrics from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ArtistResultsPage(Page): diff --git a/modules/parolesmusique/browser.py b/modules/parolesmusique/browser.py index e8b237262c..22b53cd73f 100644 --- a/modules/parolesmusique/browser.py +++ b/modules/parolesmusique/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import SongResultsPage, SonglyricsPage, ArtistResultsPage, ArtistSongsPage, HomePage diff --git a/modules/parolesmusique/pages.py b/modules/parolesmusique/pages.py index 6e422fa0c8..407c69e2ea 100644 --- a/modules/parolesmusique/pages.py +++ b/modules/parolesmusique/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.lyrics import SongLyrics from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class HomePage(Page): diff --git a/modules/parolesnet/browser.py b/modules/parolesnet/browser.py index a5db5e58b5..405b1a0e45 100644 --- a/modules/parolesnet/browser.py +++ b/modules/parolesnet/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import ResultsPage, SonglyricsPage, ArtistSongsPage, HomePage diff --git a/modules/parolesnet/pages.py b/modules/parolesnet/pages.py index 6f33fd5f20..717e0b3376 100644 --- a/modules/parolesnet/pages.py +++ b/modules/parolesnet/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.lyrics import SongLyrics from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class HomePage(Page): diff --git a/modules/pastealacon/browser.py b/modules/pastealacon/browser.py index caf6a16a5d..f489887d0f 100644 --- a/modules/pastealacon/browser.py +++ b/modules/pastealacon/browser.py @@ -20,10 +20,12 @@ import re from weboob.capabilities.paste import BasePaste, PasteNotFound -from weboob.browser2.filters.standard import CleanText, DateTime, Env, RawText, Regexp -from weboob.browser2.page import HTMLPage, method, PagesBrowser, URL -from weboob.browser2.elements import ItemElement -from weboob.core.exceptions import BrowserHTTPNotFound +from weboob.browser.filters.standard import CleanText, DateTime, Env, RawText, Regexp +from weboob.browser.pages import HTMLPage +from weboob.browser.browsers import PagesBrowser +from weboob.browser.url import URL +from weboob.browser.elements import ItemElement, method +from weboob.exceptions import BrowserHTTPNotFound class Spam(Exception): diff --git a/modules/pastebin/browser.py b/modules/pastebin/browser.py index 5c79e1d205..cdfafe9ef2 100644 --- a/modules/pastebin/browser.py +++ b/modules/pastebin/browser.py @@ -21,12 +21,12 @@ import re from weboob.capabilities.paste import BasePaste, PasteNotFound -from weboob.browser2 import HTMLPage, LoginBrowser, need_login, URL -from weboob.browser2.elements import ItemElement -from weboob.browser2.filters.standard import Base, CleanText, DateTime, Env, Filter, FilterError, RawText -from weboob.browser2.filters.html import Attr -from weboob.browser2.page import method, RawPage -from weboob.core.exceptions import BrowserHTTPNotFound, BrowserIncorrectPassword, BrowserUnavailable +from weboob.browser import LoginBrowser, need_login, URL +from weboob.browser.pages import HTMLPage, RawPage +from weboob.browser.elements import ItemElement, method +from weboob.browser.filters.standard import Base, CleanText, DateTime, Env, Filter, FilterError, RawText +from weboob.browser.filters.html import Attr +from weboob.exceptions import BrowserHTTPNotFound, BrowserIncorrectPassword, BrowserUnavailable class PastebinPaste(BasePaste): diff --git a/modules/paypal/browser.py b/modules/paypal/browser.py index 333fff5a28..f24f39bb3b 100644 --- a/modules/paypal/browser.py +++ b/modules/paypal/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages import LoginPage, AccountPage, DownloadHistoryPage, LastDownloadHistoryPage, SubmitPage, HistoryParser, UselessPage, HistoryPage, CSVAlreadyAsked import datetime diff --git a/modules/paypal/pages.py b/modules/paypal/pages.py index f7432fe962..6d06e5ff0b 100644 --- a/modules/paypal/pages.py +++ b/modules/paypal/pages.py @@ -23,8 +23,8 @@ import dateutil.parser -from weboob.tools.browser import Page, BrokenPageError -from weboob.tools.parsers.csvparser import CsvParser +from weboob.deprecated.browser import Page, BrokenPageError +from weboob.deprecated.browser.parsers.csvparser import CsvParser from weboob.tools.misc import to_unicode from weboob.tools.date import parse_french_date from weboob.capabilities.bank import Account, Transaction diff --git a/modules/phpbb/browser.py b/modules/phpbb/browser.py index 9117d148a3..28eef4c7ea 100644 --- a/modules/phpbb/browser.py +++ b/modules/phpbb/browser.py @@ -22,7 +22,7 @@ import urllib from urlparse import urlsplit -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.capabilities.messages import CantSendMessage from .pages.index import LoginPage diff --git a/modules/phpbb/pages/forum.py b/modules/phpbb/pages/forum.py index 9c406f258f..b1bb1e7d85 100644 --- a/modules/phpbb/pages/forum.py +++ b/modules/phpbb/pages/forum.py @@ -21,7 +21,7 @@ from time import sleep from urlparse import urlsplit, parse_qs -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from .index import PhpBBPage from ..tools import parse_date diff --git a/modules/phpbb/pages/index.py b/modules/phpbb/pages/index.py index 8bd0c31e62..e53bcd8e29 100644 --- a/modules/phpbb/pages/index.py +++ b/modules/phpbb/pages/index.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class PhpBBPage(Page): diff --git a/modules/piratebay/browser.py b/modules/piratebay/browser.py index 48e85ab28e..95b6ea5b14 100644 --- a/modules/piratebay/browser.py +++ b/modules/piratebay/browser.py @@ -21,7 +21,7 @@ from urlparse import urlsplit import urllib -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages.index import IndexPage from .pages.torrents import TorrentsPage, TorrentPage diff --git a/modules/piratebay/pages/index.py b/modules/piratebay/pages/index.py index 0445f35808..688b7b586f 100644 --- a/modules/piratebay/pages/index.py +++ b/modules/piratebay/pages/index.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class IndexPage(Page): diff --git a/modules/piratebay/pages/torrents.py b/modules/piratebay/pages/torrents.py index 8b782d51ee..df7b7c4dab 100644 --- a/modules/piratebay/pages/torrents.py +++ b/modules/piratebay/pages/torrents.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page,BrokenPageError +from weboob.deprecated.browser import Page,BrokenPageError from weboob.capabilities.torrent import Torrent from weboob.capabilities.base import NotAvailable, NotLoaded diff --git a/modules/pixtoilelibre/browser.py b/modules/pixtoilelibre/browser.py index ef9d5c85a3..0ff263ad0d 100644 --- a/modules/pixtoilelibre/browser.py +++ b/modules/pixtoilelibre/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.tools.capabilities.paste import image_mime from StringIO import StringIO diff --git a/modules/pixtoilelibre/pages.py b/modules/pixtoilelibre/pages.py index 66d1003d7e..6894cb881e 100644 --- a/modules/pixtoilelibre/pages.py +++ b/modules/pixtoilelibre/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import re diff --git a/modules/podnapisi/browser.py b/modules/podnapisi/browser.py index 29eed57d8c..c4a5455c2a 100644 --- a/modules/podnapisi/browser.py +++ b/modules/podnapisi/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import SearchPage, SubtitlePage, LANGUAGE_NUMBERS diff --git a/modules/podnapisi/pages.py b/modules/podnapisi/pages.py index ddf3a40561..9715d05c1f 100644 --- a/modules/podnapisi/pages.py +++ b/modules/podnapisi/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.subtitle import Subtitle from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page LANGUAGE_NUMBERS = { diff --git a/modules/poivy/browser.py b/modules/poivy/browser.py index f817cf8e47..ccd3abc924 100644 --- a/modules/poivy/browser.py +++ b/modules/poivy/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword from .pages import HomePage, LoginPage, HistoryPage, BillsPage, ErrorPage diff --git a/modules/poivy/pages.py b/modules/poivy/pages.py index abf22f535b..0a3aaf77e1 100644 --- a/modules/poivy/pages.py +++ b/modules/poivy/pages.py @@ -17,11 +17,11 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.core.exceptions import BrowserBanned -from weboob.browser2.page import HTMLPage, LoggedPage, method, pagination -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, CleanDecimal, Field, DateTime, Format -from weboob.browser2.filters.html import Attr, Link +from weboob.exceptions import BrowserBanned +from weboob.browser.pages import HTMLPage, LoggedPage, pagination +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, CleanDecimal, Field, DateTime, Format +from weboob.browser.filters.html import Attr, Link from weboob.capabilities.bill import Subscription, Detail diff --git a/modules/popolemploi/browser.py b/modules/popolemploi/browser.py index dc9cad25a2..34b580008a 100644 --- a/modules/popolemploi/browser.py +++ b/modules/popolemploi/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser.decorators import id2url -from weboob.tools.browser import Browser +from weboob.deprecated.browser.decorators import id2url +from weboob.deprecated.browser import Browser import urllib from .pages import SearchPage, AdvertPage diff --git a/modules/popolemploi/pages.py b/modules/popolemploi/pages.py index 436210eb04..73baaa1e09 100644 --- a/modules/popolemploi/pages.py +++ b/modules/popolemploi/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from weboob.tools.html import html2text -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import dateutil.parser import re diff --git a/modules/presseurop/browser.py b/modules/presseurop/browser.py index 3f57f69832..8e5e823383 100644 --- a/modules/presseurop/browser.py +++ b/modules/presseurop/browser.py @@ -21,7 +21,7 @@ from datetime import date, datetime, time from .pages.article import PresseuropPage, CartoonPage, DailySinglePage,\ DailyTitlesPage -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.tools.ordereddict import OrderedDict diff --git a/modules/prixcarburants/browser.py b/modules/prixcarburants/browser.py index 32ea765822..167b0ef0d1 100644 --- a/modules/prixcarburants/browser.py +++ b/modules/prixcarburants/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import IndexPage, ComparisonResultsPage, ShopInfoPage diff --git a/modules/prixcarburants/pages.py b/modules/prixcarburants/pages.py index 216ee27764..867beb9610 100644 --- a/modules/prixcarburants/pages.py +++ b/modules/prixcarburants/pages.py @@ -20,7 +20,7 @@ from decimal import Decimal -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities import NotAvailable from weboob.capabilities.pricecomparison import Product, Shop, Price diff --git a/modules/radiofrance/browser.py b/modules/radiofrance/browser.py index 12e59145b8..32ccc8c83a 100644 --- a/modules/radiofrance/browser.py +++ b/modules/radiofrance/browser.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Browser, Page +from weboob.deprecated.browser import Browser, Page from weboob.tools.json import json from weboob.capabilities.video import BaseVideo -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser.decorators import id2url from time import time import re diff --git a/modules/razibus/browser.py b/modules/razibus/browser.py index 7079e28282..53fd3bafa9 100644 --- a/modules/razibus/browser.py +++ b/modules/razibus/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import EventListPage, EventPage diff --git a/modules/razibus/pages.py b/modules/razibus/pages.py index d63d8efd85..378893a806 100644 --- a/modules/razibus/pages.py +++ b/modules/razibus/pages.py @@ -21,10 +21,10 @@ from datetime import time -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.filters.html import CleanHTML, Link -from weboob.browser2.filters.standard import Regexp, CleanText, DateTime, CombineDate, Filter, Env +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.filters.html import CleanHTML, Link +from weboob.browser.filters.standard import Regexp, CleanText, DateTime, CombineDate, Filter, Env class EndTime(Filter): diff --git a/modules/redmine/browser.py b/modules/redmine/browser.py index 7a4e5fd291..466b2ccf3c 100644 --- a/modules/redmine/browser.py +++ b/modules/redmine/browser.py @@ -24,7 +24,7 @@ import lxml.html from weboob.capabilities.bugtracker import IssueError -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from .pages.index import LoginPage, IndexPage, MyPage, ProjectsPage from .pages.wiki import WikiPage, WikiEditPage diff --git a/modules/redmine/module.py b/modules/redmine/module.py index c33bd8911e..4feed5c782 100644 --- a/modules/redmine/module.py +++ b/modules/redmine/module.py @@ -26,7 +26,7 @@ Query, Change from weboob.capabilities.collection import CapCollection, Collection, CollectionNotFound from weboob.tools.backend import Module, BackendConfig -from weboob.core.exceptions import BrowserHTTPNotFound +from weboob.exceptions import BrowserHTTPNotFound from weboob.tools.value import ValueBackendPassword, Value from .browser import RedmineBrowser diff --git a/modules/redmine/pages/index.py b/modules/redmine/pages/index.py index 3c366d8816..707f59c639 100644 --- a/modules/redmine/pages/index.py +++ b/modules/redmine/pages/index.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class LoginPage(Page): diff --git a/modules/redmine/pages/issues.py b/modules/redmine/pages/issues.py index d9973e1a48..d2d9c5979e 100644 --- a/modules/redmine/pages/issues.py +++ b/modules/redmine/pages/issues.py @@ -22,10 +22,10 @@ import datetime from weboob.capabilities.bugtracker import IssueError -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from weboob.tools.date import parse_french_date from weboob.tools.misc import to_unicode -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm from weboob.tools.json import json diff --git a/modules/redmine/pages/wiki.py b/modules/redmine/pages/wiki.py index 06f4597695..c23b4594fc 100644 --- a/modules/redmine/pages/wiki.py +++ b/modules/redmine/pages/wiki.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class WikiEditPage(Page): diff --git a/modules/regionsjob/browser.py b/modules/regionsjob/browser.py index 6813ee9dca..55b88c9163 100644 --- a/modules/regionsjob/browser.py +++ b/modules/regionsjob/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . import urllib -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import SearchPage, AdvertPage diff --git a/modules/regionsjob/pages.py b/modules/regionsjob/pages.py index c99afcf8b7..d4eda18be0 100644 --- a/modules/regionsjob/pages.py +++ b/modules/regionsjob/pages.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ItemElement, SkipItem, ListElement -from weboob.browser2.filters.standard import CleanText, Regexp, Format, Env, DateGuesser, DateTime -from weboob.browser2.filters.html import Link, CleanHTML +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ItemElement, SkipItem, ListElement, method +from weboob.browser.filters.standard import CleanText, Regexp, Format, Env, DateGuesser, DateTime +from weboob.browser.filters.html import Link, CleanHTML from weboob.tools.date import LinearDateGuesser from weboob.capabilities.job import BaseJobAdvert diff --git a/modules/sachsen/browser.py b/modules/sachsen/browser.py index b087c5ad65..74346c77d9 100644 --- a/modules/sachsen/browser.py +++ b/modules/sachsen/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import ListPage, HistoryPage diff --git a/modules/sachsen/pages.py b/modules/sachsen/pages.py index 8f581dd45f..5c6de4d02b 100644 --- a/modules/sachsen/pages.py +++ b/modules/sachsen/pages.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, method -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import Env, CleanText, Regexp, Field, DateTime, Map -from weboob.browser2.filters.html import Attr +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import Env, CleanText, Regexp, Field, DateTime, Map +from weboob.browser.filters.html import Attr from weboob.capabilities.gauge import Gauge, GaugeMeasure, GaugeSensor from weboob.capabilities.base import NotAvailable, NotLoaded diff --git a/modules/seeklyrics/browser.py b/modules/seeklyrics/browser.py index 602948486b..b127fffa57 100644 --- a/modules/seeklyrics/browser.py +++ b/modules/seeklyrics/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import SongResultsPage, SonglyricsPage, ArtistResultsPage, ArtistSongsPage diff --git a/modules/seeklyrics/pages.py b/modules/seeklyrics/pages.py index 8bde8c25cf..7f013b6132 100644 --- a/modules/seeklyrics/pages.py +++ b/modules/seeklyrics/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.lyrics import SongLyrics from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ArtistResultsPage(Page): diff --git a/modules/seloger/browser.py b/modules/seloger/browser.py index ba38b2a6bc..ce03d8a6a8 100644 --- a/modules/seloger/browser.py +++ b/modules/seloger/browser.py @@ -20,7 +20,7 @@ from weboob.tools.json import json -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from weboob.capabilities.housing import Query from .pages import SearchResultsPage, HousingPage diff --git a/modules/seloger/pages.py b/modules/seloger/pages.py index c231cd4731..093150d451 100644 --- a/modules/seloger/pages.py +++ b/modules/seloger/pages.py @@ -21,7 +21,7 @@ from decimal import Decimal from dateutil.parser import parse as parse_date -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.base import NotAvailable from weboob.capabilities.housing import Housing, HousingPhoto diff --git a/modules/senscritique/browser.py b/modules/senscritique/browser.py index d158799a63..34a113f5d4 100644 --- a/modules/senscritique/browser.py +++ b/modules/senscritique/browser.py @@ -17,7 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL, Firefox +from weboob.browser import PagesBrowser, URL +from weboob.browser.profiles import Firefox from .calendar import SensCritiquenCalendarEvent from .pages import AjaxPage, EventPage, JsonResumePage diff --git a/modules/senscritique/pages.py b/modules/senscritique/pages.py index 001497c4d7..e14d125c19 100644 --- a/modules/senscritique/pages.py +++ b/modules/senscritique/pages.py @@ -22,10 +22,10 @@ from datetime import date, datetime, time, timedelta -from weboob.browser2.page import HTMLPage, method, JsonPage -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.filters.standard import Filter, CleanText, Regexp, Join, Format -from weboob.browser2.filters.html import Link, Attr +from weboob.browser.pages import HTMLPage, JsonPage +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.filters.standard import Filter, CleanText, Regexp, Join, Format +from weboob.browser.filters.html import Link, Attr class Channel(Filter): diff --git a/modules/sfr/browser.py b/modules/sfr/browser.py index ef74183e34..ab30508d59 100644 --- a/modules/sfr/browser.py +++ b/modules/sfr/browser.py @@ -23,7 +23,7 @@ from .pages.compose import ClosePage, ComposePage, ConfirmPage, SentPage from .pages.login import LoginPage -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword __all__ = ['SfrBrowser'] diff --git a/modules/sfr/pages/compose.py b/modules/sfr/pages/compose.py index aadfb8ef4e..6e08911159 100644 --- a/modules/sfr/pages/compose.py +++ b/modules/sfr/pages/compose.py @@ -21,7 +21,7 @@ import re from weboob.capabilities.messages import CantSendMessage -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class ClosePage(Page): diff --git a/modules/sfr/pages/login.py b/modules/sfr/pages/login.py index d87ec83096..dd868562de 100644 --- a/modules/sfr/pages/login.py +++ b/modules/sfr/pages/login.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class LoginPage(Page): diff --git a/modules/societegenerale/browser.py b/modules/societegenerale/browser.py index ec947f828f..36b87e87b1 100644 --- a/modules/societegenerale/browser.py +++ b/modules/societegenerale/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword, BrowserUnavailable +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword, BrowserUnavailable from .pages.accounts_list import AccountsList, AccountHistory, CardsList from .pages.login import LoginPage, BadLoginPage diff --git a/modules/societegenerale/pages/accounts_list.py b/modules/societegenerale/pages/accounts_list.py index 458a639686..93bf698edc 100644 --- a/modules/societegenerale/pages/accounts_list.py +++ b/modules/societegenerale/pages/accounts_list.py @@ -28,7 +28,7 @@ from weboob.capabilities.base import empty, NotAvailable from weboob.capabilities.bank import Account from weboob.tools.capabilities.bank.transactions import FrenchTransaction -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from .base import BasePage diff --git a/modules/societegenerale/pages/base.py b/modules/societegenerale/pages/base.py index 1d17d9a857..b59ccc5765 100644 --- a/modules/societegenerale/pages/base.py +++ b/modules/societegenerale/pages/base.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page as _BasePage +from weboob.deprecated.browser import Page as _BasePage class BasePage(_BasePage): diff --git a/modules/societegenerale/pages/login.py b/modules/societegenerale/pages/login.py index 25d7239b5c..4ea6b83a24 100644 --- a/modules/societegenerale/pages/login.py +++ b/modules/societegenerale/pages/login.py @@ -23,8 +23,8 @@ import re from weboob.tools.json import json -from weboob.tools.browser import BrowserUnavailable -from weboob.tools.mech import ClientForm +from weboob.deprecated.browser import BrowserUnavailable +from weboob.deprecated.mech import ClientForm from .base import BasePage from ..captcha import Captcha, TileError diff --git a/modules/societegenerale/sgpe/browser.py b/modules/societegenerale/sgpe/browser.py index 6963aebdaf..6ab8e2941b 100644 --- a/modules/societegenerale/sgpe/browser.py +++ b/modules/societegenerale/sgpe/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserIncorrectPassword +from weboob.deprecated.browser import Browser, BrowserIncorrectPassword from weboob.tools.ordereddict import OrderedDict from .pages import LoginPage, ErrorPage, AccountsPage, CardsPage, HistoryPage, CardHistoryPage diff --git a/modules/societegenerale/sgpe/pages.py b/modules/societegenerale/sgpe/pages.py index b7112984da..982a40435b 100644 --- a/modules/societegenerale/sgpe/pages.py +++ b/modules/societegenerale/sgpe/pages.py @@ -23,9 +23,9 @@ from decimal import Decimal from datetime import datetime -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.json import json -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm from weboob.tools.misc import to_unicode from weboob.capabilities.bank import Account diff --git a/modules/somafm/module.py b/modules/somafm/module.py index 986a2c3486..6779c4d08e 100644 --- a/modules/somafm/module.py +++ b/modules/somafm/module.py @@ -24,8 +24,8 @@ from weboob.tools.capabilities.streaminfo import StreamInfo from weboob.capabilities.collection import CapCollection from weboob.tools.backend import Module -from weboob.tools.browser import StandardBrowser -from weboob.tools.parsers.iparser import IParser +from weboob.deprecated.browser import StandardBrowser +from weboob.deprecated.browser.parsers.iparser import IParser __all__ = ['SomaFMModule'] diff --git a/modules/sueurdemetal/browser.py b/modules/sueurdemetal/browser.py index 42c5ec1799..533f9d02da 100644 --- a/modules/sueurdemetal/browser.py +++ b/modules/sueurdemetal/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import PageCity, PageConcert, PageCityList, PageDate, PageDates diff --git a/modules/sueurdemetal/pages.py b/modules/sueurdemetal/pages.py index 22e79b164d..abf97ff22a 100644 --- a/modules/sueurdemetal/pages.py +++ b/modules/sueurdemetal/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.date import parse_french_date import re from urlparse import urljoin diff --git a/modules/supertoinette/browser.py b/modules/supertoinette/browser.py index 10c8614d6b..2e77d7250a 100644 --- a/modules/supertoinette/browser.py +++ b/modules/supertoinette/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import RecipePage, ResultsPage diff --git a/modules/supertoinette/pages.py b/modules/supertoinette/pages.py index ee0e501add..0ab7dea1e2 100644 --- a/modules/supertoinette/pages.py +++ b/modules/supertoinette/pages.py @@ -20,7 +20,7 @@ from weboob.capabilities.recipe import Recipe from weboob.capabilities.base import NotAvailable, NotLoaded -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import string diff --git a/modules/taz/browser.py b/modules/taz/browser.py index ea1009d366..e23ac04077 100644 --- a/modules/taz/browser.py +++ b/modules/taz/browser.py @@ -19,7 +19,7 @@ # along with weboob. If not, see . from .pages.article import ArticlePage -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser class NewspaperTazBrowser(Browser): diff --git a/modules/tinder/browser.py b/modules/tinder/browser.py index 0d01d5e100..5dc4f86c30 100644 --- a/modules/tinder/browser.py +++ b/modules/tinder/browser.py @@ -20,8 +20,10 @@ import re -from weboob.browser2 import DomainBrowser, HTMLPage, Profile -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import DomainBrowser +from weboob.browser.pages import HTMLPage +from weboob.browser.profiles import Profile +from weboob.exceptions import BrowserIncorrectPassword from weboob.tools.json import json diff --git a/modules/transilien/browser.py b/modules/transilien/browser.py index 97ba0f2421..5f24ed311d 100644 --- a/modules/transilien/browser.py +++ b/modules/transilien/browser.py @@ -19,7 +19,7 @@ # along with weboob. If not, see . from datetime import datetime -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import StationsPage, DeparturesPage, DeparturesPage2, HorairesPage, RoadMapPage diff --git a/modules/transilien/pages.py b/modules/transilien/pages.py index 9aad21489d..edf1352a6a 100644 --- a/modules/transilien/pages.py +++ b/modules/transilien/pages.py @@ -20,13 +20,13 @@ import re -from weboob.browser2.page import JsonPage, HTMLPage, method -from weboob.browser2.elements import TableElement, ItemElement, ListElement +from weboob.browser.pages import JsonPage, HTMLPage +from weboob.browser.elements import TableElement, ItemElement, ListElement, method from weboob.capabilities.travel import Station, Departure, RoadStep from weboob.capabilities import NotAvailable -from weboob.browser2.filters.standard import CleanText, TableCell, Filter, DateTime, Env, Regexp, Duration -from weboob.browser2.filters.json import Dict -from weboob.browser2.filters.html import Link +from weboob.browser.filters.standard import CleanText, TableCell, Filter, DateTime, Env, Regexp, Duration +from weboob.browser.filters.json import Dict +from weboob.browser.filters.html import Link from weboob.tools.date import LinearDateGuesser diff --git a/modules/trictractv/browser.py b/modules/trictractv/browser.py index b498dd6610..900b4641bb 100644 --- a/modules/trictractv/browser.py +++ b/modules/trictractv/browser.py @@ -19,8 +19,8 @@ import re -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .pages import IndexPage, VideoPage from .video import TricTracTVVideo diff --git a/modules/trictractv/pages.py b/modules/trictractv/pages.py index b99d1aac1f..0ffcae8512 100644 --- a/modules/trictractv/pages.py +++ b/modules/trictractv/pages.py @@ -21,7 +21,7 @@ import re from weboob.capabilities.image import BaseImage -from weboob.tools.browser import Page, BrokenPageError +from weboob.deprecated.browser import Page, BrokenPageError from .video import TricTracTVVideo diff --git a/modules/tvsubtitles/browser.py b/modules/tvsubtitles/browser.py index de4f3650b3..3dce1bf548 100644 --- a/modules/tvsubtitles/browser.py +++ b/modules/tvsubtitles/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser, BrowserHTTPNotFound +from weboob.deprecated.browser import Browser, BrowserHTTPNotFound from .pages import SeriePage, SearchPage, SeasonPage, HomePage diff --git a/modules/tvsubtitles/pages.py b/modules/tvsubtitles/pages.py index 07e5a7eb86..9d2ef3058e 100644 --- a/modules/tvsubtitles/pages.py +++ b/modules/tvsubtitles/pages.py @@ -20,7 +20,7 @@ import re from weboob.capabilities.subtitle import Subtitle -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class HomePage(Page): diff --git a/modules/twitter/browser.py b/modules/twitter/browser.py index 9afbf2d2bc..12e92c1340 100644 --- a/modules/twitter/browser.py +++ b/modules/twitter/browser.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.tools.browser import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.deprecated.browser import BrowserIncorrectPassword from weboob.capabilities.messages import Message from .pages import LoginPage, LoginErrorPage, ThreadPage, Tweet, TrendsPage,\ TimelinePage, HomeTimelinePage, SearchTimelinePage diff --git a/modules/twitter/module.py b/modules/twitter/module.py index 7e87b4542f..ac94bf3b45 100644 --- a/modules/twitter/module.py +++ b/modules/twitter/module.py @@ -23,7 +23,7 @@ from weboob.capabilities.messages import CapMessages, Thread, CapMessagesPost from weboob.capabilities.collection import CapCollection, CollectionNotFound, Collection from weboob.capabilities.base import find_object -from weboob.core.exceptions import BrowserForbidden +from weboob.exceptions import BrowserForbidden from .browser import TwitterBrowser import itertools diff --git a/modules/twitter/pages.py b/modules/twitter/pages.py index 9153ebc0ad..4696833293 100644 --- a/modules/twitter/pages.py +++ b/modules/twitter/pages.py @@ -23,10 +23,10 @@ import lxml.html as html import urllib -from weboob.browser2.page import HTMLPage, JsonPage, method, FormNotFound, pagination -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, Format, Regexp, Env, DateTime, Filter -from weboob.browser2.filters.html import Link, Attr +from weboob.browser.pages import HTMLPage, JsonPage, FormNotFound, pagination +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, Format, Regexp, Env, DateTime, Filter +from weboob.browser.filters.html import Link, Attr from weboob.capabilities.messages import Thread, Message from weboob.capabilities.base import BaseObject diff --git a/modules/unsee/browser.py b/modules/unsee/browser.py index b1ed77daf3..5928714546 100644 --- a/modules/unsee/browser.py +++ b/modules/unsee/browser.py @@ -18,13 +18,13 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser import os from uuid import uuid4 from urllib2 import Request from urlparse import urljoin from weboob.tools.json import json -from weboob.tools.parsers.lxmlparser import LxmlHtmlParser +from weboob.deprecated.browser.parsers.lxmlparser import LxmlHtmlParser __all__ = ['UnseeBrowser'] diff --git a/modules/ups/browser.py b/modules/ups/browser.py index c80f7d5996..6eeee645e8 100644 --- a/modules/ups/browser.py +++ b/modules/ups/browser.py @@ -19,7 +19,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import TrackPage diff --git a/modules/ups/pages.py b/modules/ups/pages.py index 2c2d3f0364..907b4dab26 100644 --- a/modules/ups/pages.py +++ b/modules/ups/pages.py @@ -22,7 +22,7 @@ from dateutil.parser import parse as parse_date from weboob.capabilities.parcel import Parcel, Event -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class TrackPage(Page): diff --git a/modules/vimeo/browser.py b/modules/vimeo/browser.py index c87ff0ee45..51a689c002 100644 --- a/modules/vimeo/browser.py +++ b/modules/vimeo/browser.py @@ -18,8 +18,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL -from weboob.browser2.exceptions import HTTPNotFound +from weboob.browser import PagesBrowser, URL +from weboob.browser.exceptions import HTTPNotFound from .pages import SearchPage, VideoPage, VideoJsonPage import urllib diff --git a/modules/vimeo/pages.py b/modules/vimeo/pages.py index be44ee9a73..b51b30b877 100644 --- a/modules/vimeo/pages.py +++ b/modules/vimeo/pages.py @@ -20,11 +20,11 @@ from weboob.capabilities.video import BaseVideo from weboob.capabilities.image import BaseImage -from weboob.core.exceptions import ParseError -from weboob.browser2.elements import ItemElement, ListElement -from weboob.browser2.page import HTMLPage, method, pagination, JsonPage -from weboob.browser2.filters.standard import Regexp, Env, CleanText, DateTime, Duration, Field -from weboob.browser2.filters.html import Attr, Link +from weboob.exceptions import ParseError +from weboob.browser.elements import ItemElement, ListElement, method +from weboob.browser.pages import HTMLPage, pagination, JsonPage +from weboob.browser.filters.standard import Regexp, Env, CleanText, DateTime, Duration, Field +from weboob.browser.filters.html import Attr, Link import re diff --git a/modules/vlille/browser.py b/modules/vlille/browser.py index 8acb880a4d..caaf1b95ed 100644 --- a/modules/vlille/browser.py +++ b/modules/vlille/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import ListStationsPage, InfoStationPage diff --git a/modules/vlille/pages.py b/modules/vlille/pages.py index d6fd100e49..a5fe5f2990 100644 --- a/modules/vlille/pages.py +++ b/modules/vlille/pages.py @@ -18,9 +18,9 @@ # along with weboob. If not, see . -from weboob.browser2.page import HTMLPage, XMLPage, method -from weboob.browser2.elements import ListElement, ItemElement, TableElement -from weboob.browser2.filters.standard import CleanText, TableCell, Filter +from weboob.browser.pages import HTMLPage, XMLPage +from weboob.browser.elements import ListElement, ItemElement, TableElement, method +from weboob.browser.filters.standard import CleanText, TableCell, Filter from weboob.capabilities.gauge import Gauge, GaugeMeasure, GaugeSensor from weboob.capabilities.base import NotLoaded diff --git a/modules/voyagessncf/browser.py b/modules/voyagessncf/browser.py index 3a75590eb8..8eb115f994 100644 --- a/modules/voyagessncf/browser.py +++ b/modules/voyagessncf/browser.py @@ -19,7 +19,7 @@ from random import randint -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import CitiesPage, SearchPage, SearchErrorPage, \ SearchInProgressPage, ResultsPage, ForeignPage diff --git a/modules/voyagessncf/pages.py b/modules/voyagessncf/pages.py index 4bbe68afd3..4566df5acf 100644 --- a/modules/voyagessncf/pages.py +++ b/modules/voyagessncf/pages.py @@ -22,9 +22,9 @@ from decimal import Decimal from datetime import time, datetime, timedelta -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.tools.json import json -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm from weboob.capabilities.base import UserError, Currency diff --git a/modules/weather/browser.py b/modules/weather/browser.py index 96a2befae7..9441505bee 100644 --- a/modules/weather/browser.py +++ b/modules/weather/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import ForecastPage, WeatherPage, CityPage diff --git a/modules/weather/pages.py b/modules/weather/pages.py index c9afe1af37..8354ac8c48 100644 --- a/modules/weather/pages.py +++ b/modules/weather/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page from weboob.capabilities.weather import Forecast, Current, City import datetime diff --git a/modules/wellsfargo/browser.py b/modules/wellsfargo/browser.py index b9c87c1685..95a9012add 100644 --- a/modules/wellsfargo/browser.py +++ b/modules/wellsfargo/browser.py @@ -21,8 +21,8 @@ from time import sleep from weboob.capabilities.bank import AccountNotFound -from weboob.browser2 import LoginBrowser, URL, need_login -from weboob.core.exceptions import BrowserIncorrectPassword +from weboob.browser import LoginBrowser, URL, need_login +from weboob.exceptions import BrowserIncorrectPassword from .pages import LoginPage, LoginRedirectPage, LoggedInPage, SummaryPage, \ DynamicPage diff --git a/modules/wellsfargo/pages.py b/modules/wellsfargo/pages.py index 45f2ff4a0b..b0cffeb7be 100644 --- a/modules/wellsfargo/pages.py +++ b/modules/wellsfargo/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from weboob.capabilities.bank import Account, Transaction -from weboob.browser2.page import Page, HTMLPage, LoggedPage, RawPage +from weboob.browser.pages import Page, HTMLPage, LoggedPage, RawPage from urllib import unquote from .parsers import StatementParser, clean_amount, clean_label import itertools diff --git a/modules/wordreference/browser.py b/modules/wordreference/browser.py index 5e4813e4c4..f039971b23 100644 --- a/modules/wordreference/browser.py +++ b/modules/wordreference/browser.py @@ -20,7 +20,7 @@ import urllib -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import TranslatePage diff --git a/modules/wordreference/pages.py b/modules/wordreference/pages.py index 63e789cb89..252f886164 100644 --- a/modules/wordreference/pages.py +++ b/modules/wordreference/pages.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page import re diff --git a/modules/yahoo/module.py b/modules/yahoo/module.py index fdfcb10d95..f290a90e40 100644 --- a/modules/yahoo/module.py +++ b/modules/yahoo/module.py @@ -24,7 +24,7 @@ from weboob.capabilities.weather import CapWeather, CityNotFound, Current, Forecast, City from weboob.tools.backend import Module -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser __all__ = ['YahooModule'] diff --git a/modules/youjizz/browser.py b/modules/youjizz/browser.py index b4e976dbc0..0e2dc46851 100644 --- a/modules/youjizz/browser.py +++ b/modules/youjizz/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages.index import IndexPage from .pages.video import VideoPage diff --git a/modules/youjizz/pages/index.py b/modules/youjizz/pages/index.py index 4e4517c174..dd800477e5 100644 --- a/modules/youjizz/pages/index.py +++ b/modules/youjizz/pages/index.py @@ -18,11 +18,10 @@ # along with weboob. If not, see . -from weboob.browser2 import HTMLPage -from weboob.browser2.page import method, pagination -from weboob.browser2.elements import ListElement, ItemElement -from weboob.browser2.filters.standard import CleanText, Duration, Regexp -from weboob.browser2.filters.html import Link, CSS +from weboob.browser.pages import HTMLPage, pagination +from weboob.browser.elements import ListElement, ItemElement, method +from weboob.browser.filters.standard import CleanText, Duration, Regexp +from weboob.browser.filters.html import Link, CSS from weboob.capabilities.base import NotAvailable from weboob.capabilities.image import BaseImage from weboob.capabilities.video import BaseVideo diff --git a/modules/youjizz/pages/video.py b/modules/youjizz/pages/video.py index d69c8f52d2..919538cce6 100644 --- a/modules/youjizz/pages/video.py +++ b/modules/youjizz/pages/video.py @@ -20,9 +20,9 @@ import re -from weboob.browser2.page import method, HTMLPage -from weboob.browser2.elements import ItemElement -from weboob.browser2.filters.standard import CleanText, Env, Duration +from weboob.browser.pages import HTMLPage +from weboob.browser.elements import ItemElement, method +from weboob.browser.filters.standard import CleanText, Env, Duration from weboob.capabilities.video import BaseVideo from weboob.tools.misc import to_unicode diff --git a/modules/youporn/browser.py b/modules/youporn/browser.py index 1f00eb3bb7..e4f9b5afe0 100644 --- a/modules/youporn/browser.py +++ b/modules/youporn/browser.py @@ -18,8 +18,8 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser -from weboob.tools.browser.decorators import id2url +from weboob.deprecated.browser import Browser +from weboob.deprecated.browser.decorators import id2url from .pages.index import IndexPage from .pages.video import VideoPage diff --git a/modules/youporn/pages/base.py b/modules/youporn/pages/base.py index 12d05c3925..77db38890d 100644 --- a/modules/youporn/pages/base.py +++ b/modules/youporn/pages/base.py @@ -17,11 +17,11 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm ControlNotFoundError = ClientForm.ControlNotFoundError from mechanize import FormNotFoundError -from weboob.tools.browser import Page +from weboob.deprecated.browser import Page class PornPage(Page): diff --git a/modules/youporn/pages/video.py b/modules/youporn/pages/video.py index 239351dcf9..6d62e2968b 100644 --- a/modules/youporn/pages/video.py +++ b/modules/youporn/pages/video.py @@ -23,7 +23,7 @@ from dateutil.parser import parse as parse_dt from weboob.capabilities.base import NotAvailable -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import BrokenPageError from .base import PornPage from ..video import YoupornVideo diff --git a/modules/youtube/browser.py b/modules/youtube/browser.py index e4f6f6ed72..60eef4a899 100644 --- a/modules/youtube/browser.py +++ b/modules/youtube/browser.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser import Browser +from weboob.deprecated.browser import Browser from .pages import BaseYoutubePage, VideoPage, ForbiddenVideoPage, \ VerifyAgePage, VerifyControversyPage, \ diff --git a/modules/youtube/pages.py b/modules/youtube/pages.py index 285fc81f28..27d7416dfd 100644 --- a/modules/youtube/pages.py +++ b/modules/youtube/pages.py @@ -32,7 +32,7 @@ import io from weboob.capabilities.base import UserError -from weboob.tools.browser import Page, BrokenPageError, BrowserIncorrectPassword +from weboob.deprecated.browser import Page, BrokenPageError, BrowserIncorrectPassword from weboob.tools.json import json diff --git a/setup.cfg b/setup.cfg index 59fbd5dbc0..1edd54a3bc 100644 --- a/setup.cfg +++ b/setup.cfg @@ -9,7 +9,7 @@ tests = weboob.capabilities.bank, weboob.tools.application.formatters.json, weboob.tools.application.formatters.table, weboob.tools.path, - weboob.browser2.filters.standard + weboob.browser.filters.standard [isort] known_first_party=weboob diff --git a/tools/boilerplate_data/base_browser.py b/tools/boilerplate_data/base_browser.py index cc3db9ca98..23c3496c6e 100644 --- a/tools/boilerplate_data/base_browser.py +++ b/tools/boilerplate_data/base_browser.py @@ -1,5 +1,5 @@ <%inherit file="layout.py"/> -from weboob.browser2 import PagesBrowser, URL +from weboob.browser import PagesBrowser, URL from .pages import Page1, Page2 diff --git a/tools/boilerplate_data/base_pages.py b/tools/boilerplate_data/base_pages.py index 74b44c8be1..5852ac1cf5 100644 --- a/tools/boilerplate_data/base_pages.py +++ b/tools/boilerplate_data/base_pages.py @@ -1,5 +1,5 @@ <%inherit file="layout.py"/> -from weboob.browser2 import HTMLPage +from weboob.browser import HTMLPage class Page1(HTMLPage): diff --git a/tools/certhash.py b/tools/certhash.py index 219c324969..55ad133efb 100755 --- a/tools/certhash.py +++ b/tools/certhash.py @@ -1,6 +1,6 @@ #!/usr/bin/env python from __future__ import print_function import sys -from weboob.tools.browser import StandardBrowser +from weboob.deprecated.browser import StandardBrowser print(StandardBrowser()._certhash(sys.argv[1])) diff --git a/weboob/browser2/__init__.py b/weboob/browser/__init__.py similarity index 61% rename from weboob/browser2/__init__.py rename to weboob/browser/__init__.py index cfa754bc19..51d7bd5ba5 100644 --- a/weboob/browser2/__init__.py +++ b/weboob/browser/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright(C) 2012 Laurent Bachelier +# Copyright(C) 2012-2014 Laurent Bachelier # # This file is part of weboob. # @@ -17,9 +17,9 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from .browser import Browser, DomainBrowser, Wget, Firefox, UrlNotAllowed, Profile -from .page import PagesBrowser, Page, URL, HTMLPage, LoginBrowser, need_login, JsonPage, LoggedPage, XMLPage +from .browsers import Browser, DomainBrowser, UrlNotAllowed, PagesBrowser, LoginBrowser, need_login +from .url import URL -__all__ = ['Browser', 'DomainBrowser', 'Wget', 'Firefox', 'UrlNotAllowed', 'Profile', 'XMLPage', - 'PagesBrowser', 'Page', 'URL', 'HTMLPage', 'LoginBrowser', 'need_login', 'JsonPage', 'LoggedPage'] +__all__ = ['Browser', 'DomainBrowser', 'UrlNotAllowed', 'PagesBrowser', 'URL', + 'LoginBrowser', 'need_login'] diff --git a/weboob/browser2/browser.py b/weboob/browser/browsers.py similarity index 75% rename from weboob/browser2/browser.py rename to weboob/browser/browsers.py index 80502b6b95..d3647e23c7 100644 --- a/weboob/browser2/browser.py +++ b/weboob/browser/browsers.py @@ -26,6 +26,7 @@ from urlparse import urlparse, urljoin import os import sys +from copy import deepcopy try: import requests @@ -35,85 +36,14 @@ raise ImportError('Please install python-requests >= 2.0') from weboob.tools.log import getLogger +from weboob.tools.ordereddict import OrderedDict from .cookies import WeboobCookieJar from .exceptions import HTTPNotFound, ClientError, ServerError from .sessions import FuturesSession - - -class Profile(object): - """ - A profile represents the way Browser should act. - Usually it is to mimic a real browser. - """ - - def setup_session(self, session): - """ - Change default headers, set up hooks, etc. - - Warning: Do not enable lzma, bzip or bzip2, sdch encodings - as python-requests does not support it yet. - Supported as of 2.2: gzip, deflate, compress. - In doubt, do not change the default Accept-Encoding header - of python-requests. - """ - raise NotImplementedError() - - -class Weboob(Profile): - """ - It's us! - Recommended for Weboob-friendly websites only. - """ - - def __init__(self, version): - self.version = version - - def setup_session(self, session): - session.headers['User-Agent'] = 'weboob/%s' % self.version - - -class Firefox(Profile): - """ - Try to mimic a specific version of Firefox. - Ideally, it should follow the current ESR Firefox: - https://www.mozilla.org/en-US/firefox/organizations/all.html - Do not change the Firefox version without checking the Gecko one! - """ - - def setup_session(self, session): - """ - Set up headers for a standard Firefox request - (except for DNT which isn't on by default but is a good idea). - - The goal is to be unidentifiable. - """ - # Replace all base requests headers - # https://developer.mozilla.org/en/Gecko_user_agent_string_reference - # https://bugzilla.mozilla.org/show_bug.cgi?id=572650 - session.headers = { - 'Accept-Language': 'en-us,en;q=0.5', - 'Accept-Encoding': 'gzip, deflate', - 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', - 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0', - 'DNT': '1'} - - -class Wget(Profile): - """ - Common alternative user agent. - Some websites will give you a version with less JavaScript. - Some others could ban you (after all, wget is not a real browser). - """ - def __init__(self, version='1.11.4'): - self.version = version - - def setup_session(self, session): - # Don't remove base headers, if websites want to block fake browsers, - # they will probably block any wget user agent anyway. - session.headers.update({ - 'Accept': '*/*', - 'User-Agent': 'Wget/%s' % self.version}) +from .profiles import Firefox +from .pages import NextPage +from .url import URL class Browser(object): @@ -579,3 +509,183 @@ def go_home(self): Go to the "home" page, usually the BASEURL. """ return self.location(self.BASEURL or self.absurl('/')) + + +class _PagesBrowserMeta(type): + """ + Private meta-class used to keep order of URLs instances of PagesBrowser. + """ + def __new__(mcs, name, bases, attrs): + urls = [(url_name, attrs.pop(url_name)) for url_name, obj in attrs.items() if isinstance(obj, URL)] + urls.sort(key=lambda x: x[1]._creation_counter) + + new_class = super(_PagesBrowserMeta, mcs).__new__(mcs, name, bases, attrs) + if new_class._urls is None: + new_class._urls = OrderedDict() + else: + new_class._urls = deepcopy(new_class._urls) + new_class._urls.update(urls) + return new_class + +class PagesBrowser(DomainBrowser): + r""" + A browser which works pages and keep state of navigation. + + To use it, you have to derive it and to create URL objects as class + attributes. When open() or location() are called, if the url matches + one of URL objects, it returns a Page object. In case of location(), it + stores it in self.page. + + Example: + + >>> class HomePage(Page): + ... pass + ... + >>> class ListPage(Page): + ... pass + ... + >>> class MyBrowser(PagesBrowser): + ... BASEURL = 'http://example.org' + ... home = URL('/(index\.html)?', HomePage) + ... list = URL('/list\.html', ListPage) + ... + + You can then use URL instances to go on pages. + """ + + + _urls = None + __metaclass__ = _PagesBrowserMeta + + def __getattr__(self, name): + if self._urls is not None and name in self._urls: + return self._urls[name] + else: + raise AttributeError("'%s' object has no attribute '%s'" % ( + self.__class__.__name__, name)) + + def __init__(self, *args, **kwargs): + super(PagesBrowser, self).__init__(*args, **kwargs) + + self.page = None + self._urls = deepcopy(self._urls) + for url in self._urls.itervalues(): + url.browser = self + + def open(self, *args, **kwargs): + """ + Same method than + :meth:`weboob.browser.browsers.DomainBrowser.open`, but the + response contains an attribute `page` if the url matches any + :class:`URL` object. + """ + + callback = kwargs.pop('callback', lambda response: response) + + # Have to define a callback to seamlessly process synchronous and + # asynchronous requests, see :meth:`Browser.open` and its `async` + # and `callback` params. + def internal_callback(response): + # Try to handle the response page with an URL instance. + response.page = None + for url in self._urls.itervalues(): + page = url.handle(response) + if page is not None: + self.logger.debug('Handle %s with %s' % (response.url, page.__class__.__name__)) + response.page = page + break + + if response.page is None: + self.logger.debug('Unable to handle %s' % response.url) + + return callback(response) + + return super(PagesBrowser, self).open(callback=internal_callback, *args, **kwargs) + + def location(self, *args, **kwargs): + """ + Same method than + :meth:`weboob.browser.browsers.Browser.location`, but if the + url matches any :class:`URL` object, an attribute `page` is added to + response, and the attribute :attr:`PagesBrowser.page` is set. + """ + if self.page is not None: + # Call leave hook. + self.page.on_leave() + + response = self.open(*args, **kwargs) + + self.response = response + self.page = response.page + self.url = response.url + + if self.page is not None: + # Call load hook. + self.page.on_load() + + # Returns self.response in case on_load recalls location() + return self.response + + def pagination(self, func, *args, **kwargs): + r""" + This helper function can be used to handle pagination pages easily. + + When the called function raises an exception :class:`NextPage`, it goes + on the wanted page and recall the function. + + :class:`NextPage` constructor can take an url or a Request object. + + >>> class Page(HTMLPage): + ... def iter_values(self): + ... for el in self.doc.xpath('//li'): + ... yield el.text + ... for next in self.doc.xpath('//a'): + ... raise NextPage(next.attrib['href']) + ... + >>> class Browser(PagesBrowser): + ... BASEURL = 'http://people.symlink.me' + ... list = URL('/~rom1/projects/weboob/list-(?P\d+).html', Page) + ... + >>> b = Browser() + >>> b.list.go(pagenum=1) + >>> list(b.pagination(lambda: b.page.iter_values())) + ['One', 'Two', 'Three', 'Four'] + """ + while True: + try: + for r in func(*args, **kwargs): + yield r + except NextPage as e: + self.location(e.request) + else: + return + + +def need_login(func): + """ + Decorator used to require to be logged to access to this function. + """ + def inner(browser, *args, **kwargs): + if browser.page is None or not browser.page.logged: + browser.do_login() + return func(browser, *args, **kwargs) + + return inner + + +class LoginBrowser(PagesBrowser): + """ + A browser which supports login. + """ + def __init__(self, username, password, *args, **kwargs): + super(LoginBrowser, self).__init__(*args, **kwargs) + self.username = username + self.password = password + + def do_login(self): + """ + Abstract method to implement to login on website. + + It is call when a login is needed. + """ + raise NotImplementedError() diff --git a/weboob/browser2/cookies.py b/weboob/browser/cookies.py similarity index 100% rename from weboob/browser2/cookies.py rename to weboob/browser/cookies.py diff --git a/weboob/browser2/elements.py b/weboob/browser/elements.py similarity index 97% rename from weboob/browser2/elements.py rename to weboob/browser/elements.py index c79ced8185..2934b1746d 100644 --- a/weboob/browser2/elements.py +++ b/weboob/browser/elements.py @@ -23,7 +23,7 @@ from weboob.tools.log import getLogger from weboob.tools.ordereddict import OrderedDict -from weboob.browser2.page import NextPage +from weboob.browser.pages import NextPage from .filters.standard import _Filter, CleanText from .filters.html import AttributeNotFound, XPathNotFound @@ -38,6 +38,16 @@ class DataError(Exception): """ +def method(klass): + """ + Class-decorator to call it as a method. + """ + def inner(self, *args, **kwargs): + return klass(self)(*args, **kwargs) + return inner + + + class AbstractElement(object): _creation_counter = 0 @@ -290,3 +300,5 @@ def __init__(self, *args, **kwargs): def get_colnum(self, name): return self._cols.get(name, None) + + diff --git a/weboob/browser2/exceptions.py b/weboob/browser/exceptions.py similarity index 92% rename from weboob/browser2/exceptions.py rename to weboob/browser/exceptions.py index 54260d00d0..2abef1c596 100644 --- a/weboob/browser2/exceptions.py +++ b/weboob/browser/exceptions.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . from requests.exceptions import HTTPError -from weboob.core.exceptions import BrowserHTTPError, BrowserHTTPNotFound +from weboob.exceptions import BrowserHTTPError, BrowserHTTPNotFound class HTTPNotFound(HTTPError, BrowserHTTPNotFound): diff --git a/weboob/browser2/filters/__init__.py b/weboob/browser/filters/__init__.py similarity index 100% rename from weboob/browser2/filters/__init__.py rename to weboob/browser/filters/__init__.py diff --git a/weboob/browser2/filters/html.py b/weboob/browser/filters/html.py similarity index 100% rename from weboob/browser2/filters/html.py rename to weboob/browser/filters/html.py diff --git a/weboob/browser2/filters/javascript.py b/weboob/browser/filters/javascript.py similarity index 97% rename from weboob/browser2/filters/javascript.py rename to weboob/browser/filters/javascript.py index 51546b9d58..3610aacc66 100644 --- a/weboob/browser2/filters/javascript.py +++ b/weboob/browser/filters/javascript.py @@ -21,8 +21,8 @@ import re from ast import literal_eval -from weboob.browser2.filters.standard import Filter, Regexp, RegexpError -from weboob.core.exceptions import ParseError +from weboob.browser.filters.standard import Filter, Regexp, RegexpError +from weboob.exceptions import ParseError __all__ = ['JSPayload', 'JSVar'] diff --git a/weboob/browser2/filters/json.py b/weboob/browser/filters/json.py similarity index 100% rename from weboob/browser2/filters/json.py rename to weboob/browser/filters/json.py diff --git a/weboob/browser2/filters/standard.py b/weboob/browser/filters/standard.py similarity index 99% rename from weboob/browser2/filters/standard.py rename to weboob/browser/filters/standard.py index 7a39157955..d401823c7f 100644 --- a/weboob/browser2/filters/standard.py +++ b/weboob/browser/filters/standard.py @@ -28,8 +28,8 @@ from weboob.capabilities.base import empty from weboob.tools.compat import basestring -from weboob.core.exceptions import ParseError -from weboob.browser2 import URL +from weboob.exceptions import ParseError +from weboob.browser.url import URL from weboob.tools.log import getLogger class NoDefault(object): @@ -251,7 +251,7 @@ class TableCell(_Filter): For example: >>> from weboob.capabilities.bank import Transaction - >>> from weboob.browser2.elements import TableElement, ItemElement + >>> from weboob.browser.elements import TableElement, ItemElement >>> class table(TableElement): ... head_xpath = '//table/thead/th' ... item_xpath = '//table/tbody/tr' diff --git a/weboob/browser/pages.py b/weboob/browser/pages.py new file mode 100644 index 0000000000..b5c05321a1 --- /dev/null +++ b/weboob/browser/pages.py @@ -0,0 +1,344 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2014 Romain Bignon +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + +from __future__ import absolute_import + +import warnings +from io import BytesIO + +import requests + +from weboob.tools.ordereddict import OrderedDict +from weboob.tools.compat import basestring + +from weboob.tools.log import getLogger + + +def pagination(func): + r""" + This helper decorator can be used to handle pagination pages easily. + + When the called function raises an exception :class:`NextPage`, it goes on + the wanted page and recall the function. + + :class:`NextPage` constructor can take an url or a Request object. + + >>> class Page(HTMLPage): + ... @pagination + ... def iter_values(self): + ... for el in self.doc.xpath('//li'): + ... yield el.text + ... for next in self.doc.xpath('//a'): + ... raise NextPage(next.attrib['href']) + ... + >>> class Browser(PagesBrowser): + ... BASEURL = 'http://people.symlink.me' + ... list = URL('/~rom1/projects/weboob/list-(?P\d+).html', Page) + ... + >>> b = Browser() + >>> b.list.go(pagenum=1) + >>> list(b.page.iter_values()) + ['One', 'Two', 'Three', 'Four'] + """ + def inner(page, *args, **kwargs): + while True: + try: + for r in func(page, *args, **kwargs): + yield r + except NextPage as e: + result = page.browser.location(e.request) + page = result.page + else: + return + + return inner + + +class NextPage(Exception): + """ + Exception used for example in a Page to tell PagesBrowser.pagination to + go on the next page. + + See :meth:`PagesBrowser.pagination` or decorator :func:`pagination`. + """ + def __init__(self, request): + super(NextPage, self).__init__() + self.request = request + + +class Page(object): + """ + Base page. + """ + logged = False + + def __init__(self, browser, response, params=None): + self.browser = browser + self.logger = getLogger(self.__class__.__name__.lower(), browser.logger) + self.response = response + self.url = self.response.url + self.params = params + + def on_load(self): + """ + Event called when browser loads this page. + """ + + def on_leave(self): + """ + Event called when browser leaves this page. + """ + +class FormNotFound(Exception): + """ + Raised when :meth:`HTMLPage.get_form` can't find a form. + """ + +class FormSubmitWarning(UserWarning): + """ + A form has more than one submit element selected, and will likely + generate an invalid request. + """ + +class Form(OrderedDict): + """ + Represents a form of an HTML page. + + It is used as a dict with pre-filled values from HTML. You can set new + values as strings by setting an item value. + + submit_el allows you to only consider one submit button (which is what + browsers do). If set to None, it takes all of them, and if set to False, + it takes none. + """ + + def __init__(self, page, el, submit_el=None): + super(Form, self).__init__() + self.page = page + self.el = el + self.submit_el = submit_el + self.method = el.attrib.get('method', 'GET') + self.url = el.attrib.get('action', page.url) + self.name = el.attrib.get('name', '') + submits = 0 + + for inp in el.xpath('.//input | .//select | .//textarea'): + try: + name = inp.attrib['name'] + except KeyError: + continue + + try: + if inp.attrib['type'] in ('checkbox', 'radio') and 'checked' not in inp.attrib: + continue + except KeyError: + pass + + try: + if inp.attrib['type'] == 'submit': + if self.submit_el is not None and inp is not self.submit_el: + continue + else: + submits += 1 + except KeyError: + pass + + if inp.tag == 'select': + options = inp.xpath('.//option[@selected]') + if len(options) == 0: + options = inp.xpath('.//option') + if len(options) == 0: + value = u'' + else: + value = options[0].attrib.get('value', options[0].text or u'') + else: + value = inp.attrib.get('value', inp.text or u'') + + self[name] = value + + if submits > 1: + warnings.warn('Form has more than one submit input, you should chose the correct one', FormSubmitWarning, stacklevel=3) + if self.submit_el is not None and self.submit_el is not False and submits == 0: + warnings.warn('Form had a submit element provided, but it was not found', FormSubmitWarning, stacklevel=3) + + + @property + def request(self): + """ + Get the Request object from the form. + """ + if self.method.lower() == 'get': + req = requests.Request(self.method, self.url, params=self) + else: + req = requests.Request(self.method, self.url, data=self) + req.headers.setdefault('Referer', self.page.url) + return req + + def submit(self, **kwargs): + """ + Submit the form and tell browser to be located to the new page. + """ + kwargs.setdefault('data_encoding', self.page.encoding) + return self.page.browser.location(self.request, **kwargs) + + +class CsvPage(Page): + DIALECT = 'excel' + FMTPARAMS = {} + ENCODING = 'utf-8' + NEWLINES_HACK = True + + """ + If True, will consider the first line as a header. + This means the rows will be also available as dictionnaries. + """ + HEADER = None + + def __init__(self, browser, response, *args, **kwargs): + super(CsvPage, self).__init__(browser, response, *args, **kwargs) + content = response.content + encoding = self.ENCODING + if encoding == 'utf-16le': + content = content.decode('utf-16le')[1:].encode('utf-8') + encoding = 'utf-8' + if self.NEWLINES_HACK: + content = content.replace('\r\n', '\n').replace('\r', '\n') + fp = BytesIO(content) + self.doc = self.parse(fp, encoding) + + def parse(self, data, encoding=None): + import csv + reader = csv.reader(data, dialect=self.DIALECT, **self.FMTPARAMS) + header = None + drows = [] + rows = [] + for i, row in enumerate(reader): + if self.HEADER and i+1 < self.HEADER: + continue + row = self.decode_row(row, encoding) + if header is None and self.HEADER: + header = row + else: + rows.append(row) + if header: + drow = {} + for i, cell in enumerate(row): + drow[header[i]] = cell + drows.append(drow) + return drows if header is not None else row + + def decode_row(self, row, encoding): + if encoding: + return [unicode(cell, encoding) for cell in row] + else: + return row + + +class JsonPage(Page): + def __init__(self, browser, response, *args, **kwargs): + super(JsonPage, self).__init__(browser, response, *args, **kwargs) + from weboob.tools.json import json + self.doc = json.loads(response.text) + + +class XMLPage(Page): + ENCODING = None + """ + Force a page encoding. + It is recommended to use None for autodetection. + """ + + def __init__(self, browser, response, *args, **kwargs): + super(XMLPage, self).__init__(browser, response, *args, **kwargs) + import lxml.etree as etree + parser = etree.XMLParser(encoding=self.ENCODING or response.encoding) + self.doc = etree.parse(BytesIO(response.content), parser) + + +class RawPage(Page): + def __init__(self, browser, response, *args, **kwargs): + super(RawPage, self).__init__(browser, response, *args, **kwargs) + self.doc = response.content + + +class HTMLPage(Page): + """ + HTML page. + """ + FORM_CLASS = Form + + ENCODING = None + """ + Force a page encoding. + It is recommended to use None for autodetection. + """ + + def __init__(self, browser, response, *args, **kwargs): + super(HTMLPage, self).__init__(browser, response, *args, **kwargs) + self.encoding = self.ENCODING or response.encoding + import lxml.html as html + parser = html.HTMLParser(encoding=self.encoding) + self.doc = html.parse(BytesIO(response.content), parser) + + def get_form(self, xpath='//form', name=None, nr=None, submit=None): + """ + Get a :class:`Form` object from a selector. + The form will be analyzed and its parameters extracted. + In the case there is more than one "submit" input, only one of + them should be chosen to generate the request. + + :param xpath: xpath string to select forms + :type xpath: :class:`str` + :param name: if supplied, select a form with the given name + :type name: :class:`str` + :param nr: if supplied, take the n+1 th selected form + :type nr: :class:`int` + :param submit: if supplied, xpath string to select the submit \ + element from the form + :type submit: :class:`str` + :rtype: :class:`Form` + :raises: :class:`FormNotFound` if no form is found + """ + i = 0 + for el in self.doc.xpath(xpath): + if name is not None and el.attrib.get('name', '') != name: + continue + if nr is not None and i != nr: + i += 1 + continue + + if isinstance(submit, basestring): + submit_el = el.xpath(submit)[0] + else: + submit_el = submit + + return self.FORM_CLASS(self, el, submit_el) + + raise FormNotFound() + + +class LoggedPage(object): + """ + A page that only logged users can reach. If we did not get a redirection + for this page, we are sure that the login is still active. + + Do not use this class for page we mixed content (logged/anonymous) or for + pages with a login form. + """ + logged = True diff --git a/weboob/browser/profiles.py b/weboob/browser/profiles.py new file mode 100644 index 0000000000..2d217892e3 --- /dev/null +++ b/weboob/browser/profiles.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2012-2014 Laurent Bachelier +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + + +class Profile(object): + """ + A profile represents the way Browser should act. + Usually it is to mimic a real browser. + """ + + def setup_session(self, session): + """ + Change default headers, set up hooks, etc. + + Warning: Do not enable lzma, bzip or bzip2, sdch encodings + as python-requests does not support it yet. + Supported as of 2.2: gzip, deflate, compress. + In doubt, do not change the default Accept-Encoding header + of python-requests. + """ + raise NotImplementedError() + + +class Weboob(Profile): + """ + It's us! + Recommended for Weboob-friendly websites only. + """ + + def __init__(self, version): + self.version = version + + def setup_session(self, session): + session.headers['User-Agent'] = 'weboob/%s' % self.version + + +class Firefox(Profile): + """ + Try to mimic a specific version of Firefox. + Ideally, it should follow the current ESR Firefox: + https://www.mozilla.org/en-US/firefox/organizations/all.html + Do not change the Firefox version without checking the Gecko one! + """ + + def setup_session(self, session): + """ + Set up headers for a standard Firefox request + (except for DNT which isn't on by default but is a good idea). + + The goal is to be unidentifiable. + """ + # Replace all base requests headers + # https://developer.mozilla.org/en/Gecko_user_agent_string_reference + # https://bugzilla.mozilla.org/show_bug.cgi?id=572650 + session.headers = { + 'Accept-Language': 'en-us,en;q=0.5', + 'Accept-Encoding': 'gzip, deflate', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0', + 'DNT': '1'} + + +class Wget(Profile): + """ + Common alternative user agent. + Some websites will give you a version with less JavaScript. + Some others could ban you (after all, wget is not a real browser). + """ + def __init__(self, version='1.11.4'): + self.version = version + + def setup_session(self, session): + # Don't remove base headers, if websites want to block fake browsers, + # they will probably block any wget user agent anyway. + session.headers.update({ + 'Accept': '*/*', + 'User-Agent': 'Wget/%s' % self.version}) + + diff --git a/weboob/browser2/sessions.py b/weboob/browser/sessions.py similarity index 99% rename from weboob/browser2/sessions.py rename to weboob/browser/sessions.py index 3ee4757f09..8a0e40cb31 100644 --- a/weboob/browser2/sessions.py +++ b/weboob/browser/sessions.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . # Inspired by: https://github.com/ross/requests-futures/blob/master/requests_futures/sessions.py -# XXX Licence issues ? +# XXX Licence issues? try: from concurrent.futures import ThreadPoolExecutor @@ -58,7 +58,6 @@ def merge_hooks(request_hooks, session_hooks, dict_class=OrderedDict): class WeboobSession(Session): - def prepare_request(self, request): """Constructs a :class:`PreparedRequest ` for transmission and returns it. The :class:`PreparedRequest` has settings @@ -99,8 +98,8 @@ def prepare_request(self, request): ) return p -class FuturesSession(WeboobSession): +class FuturesSession(WeboobSession): def __init__(self, executor=None, max_workers=2, *args, **kwargs): """Creates a FuturesSession diff --git a/weboob/browser/url.py b/weboob/browser/url.py new file mode 100644 index 0000000000..6f8ff1a047 --- /dev/null +++ b/weboob/browser/url.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2014 Romain Bignon +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + +try: + from urllib.parse import unquote +except ImportError: + from urllib import unquote +import re +import requests + +from weboob.tools.regex_helper import normalize + + +class UrlNotResolvable(Exception): + """ + Raised when trying to locate on an URL instance which url pattern is not resolvable as a real url. + """ + + +class URL(object): + """ + A description of an URL on the PagesBrowser website. + + It takes one or several regexps to match urls, and an optional Page + class which is instancied by PagesBrowser.open if the page matches a regex. + """ + _creation_counter = 0 + + def __init__(self, *args): + self.urls = [] + self.klass = None + self.browser = None + for arg in args: + if isinstance(arg, basestring): + self.urls.append(arg) + if isinstance(arg, type): + self.klass = arg + + self._creation_counter = URL._creation_counter + URL._creation_counter += 1 + + def is_here(self, **kwargs): + """ + Returns True if the current page of browser matches this URL. + If arguments are provided, and only then, they are checked against the arguments + that were used to build the current page URL. + """ + assert self.klass is not None, "You can use this method only if there is a Page class handler." + + if len(kwargs): + params = self.match(self.build(**kwargs)).groupdict() + else: + params = None + + # XXX use unquote on current params values because if there are spaces + # or special characters in them, it is encoded only in but not in kwargs. + return self.browser.page and isinstance(self.browser.page, self.klass) \ + and (params is None or params == dict([(k,unquote(v)) for k,v in self.browser.page.params.iteritems()])) + + def stay_or_go(self, **kwargs): + """ + Request to go on this url only if we aren't already here. + + Arguments are optional parameters for url. + + >>> url = URL('http://exawple.org/(?P).html') + >>> url.stay_or_go(pagename='index') + """ + if self.is_here(**kwargs): + return self.browser.page + + return self.go(**kwargs) + + def go(self, params=None, data=None, **kwargs): + """ + Request to go on this url. + + Arguments are optional parameters for url. + + >>> url = URL('http://exawple.org/(?P).html') + >>> url.stay_or_go(pagename='index') + """ + r = self.browser.location(self.build(**kwargs), params=params, data=data) + return r.page or r + + def open(self, params=None, data=None, **kwargs): + """ + Request to open on this url. + + Arguments are optional parameters for url. + + :param data: POST data + :type url: str or dict or None + + >>> url = URL('http://exawple.org/(?P).html') + >>> url.open(pagename='index') + """ + r = self.browser.open(self.build(**kwargs), params=params, data=data) + return r.page or r + + def build(self, **kwargs): + """ + Build an url with the given arguments from URL's regexps. + + :param param: Query string parameters + + :rtype: :class:`str` + :raises: :class:`UrlNotResolvable` if unable to resolve a correct url with the given arguments. + """ + browser = kwargs.pop('browser', self.browser) + params = kwargs.pop('params', None) + patterns = [] + for url in self.urls: + patterns += normalize(url) + + for pattern, _ in patterns: + url = pattern + # only use full-name substitutions, to allow % in URLs + for kwkey in kwargs.keys(): # need to use keys() because of pop() + search = '%%(%s)s' % kwkey + if search in pattern: + url = url.replace(search, unicode(kwargs.pop(kwkey))) + # if there are named substitutions left, ignore pattern + if re.search('%\([A-z_]+\)s', url): + continue + # if not all kwargs were used + if len(kwargs): + continue + + url = browser.absurl(url, base=True) + if params: + p = requests.models.PreparedRequest() + p.prepare_url(url, params) + url = p.url + return url + + raise UrlNotResolvable('Unable to resolve URL with %r. Available are %s' % (kwargs, ', '.join([pattern for pattern, _ in patterns]))) + + def match(self, url, base=None): + """ + Check if the given url match this object. + """ + if base is None: + assert self.browser is not None + base = self.browser.BASEURL + + for regex in self.urls: + if not re.match(r'^\w+://.*', regex): + regex = re.escape(base).rstrip('/') + '/' + regex.lstrip('/') + m = re.match(regex, url) + if m: + return m + + def handle(self, response): + """ + Handle a HTTP response to get an instance of the klass if it matches. + """ + if self.klass is None: + return + + m = self.match(response.url) + if m: + page = self.klass(self.browser, response, m.groupdict()) + if hasattr(page, 'is_here'): + if callable(page.is_here): + if page.is_here(): + return page + else: + assert isinstance(page.is_here, basestring) + if page.doc.xpath(page.is_here): + return page + else: + return page + + def id2url(self, func): + r""" + Helper decorator to get an URL if the given first parameter is an ID. + """ + def inner(browser, id_or_url, *args, **kwargs): + if re.match('^https?://.*', id_or_url): + if not self.match(id_or_url, browser.BASEURL): + return + else: + id_or_url = self.build(id=id_or_url, browser=browser) + + return func(browser, id_or_url, *args, **kwargs) + return inner + + diff --git a/weboob/browser2/page.py b/weboob/browser2/page.py deleted file mode 100644 index a51a50b141..0000000000 --- a/weboob/browser2/page.py +++ /dev/null @@ -1,716 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2014 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - -from __future__ import absolute_import - -try: - from urllib.parse import unquote -except ImportError: - from urllib import unquote -import re -import warnings -from copy import deepcopy -from io import BytesIO - -import requests - -from weboob.tools.ordereddict import OrderedDict -from weboob.tools.regex_helper import normalize -from weboob.tools.compat import basestring - -from weboob.tools.log import getLogger - -from .browser import DomainBrowser - - -class UrlNotResolvable(Exception): - """ - Raised when trying to locate on an URL instance which url pattern is not resolvable as a real url. - """ - - -class URL(object): - """ - A description of an URL on the PagesBrowser website. - - It takes one or several regexps to match urls, and an optional Page - class which is instancied by PagesBrowser.open if the page matches a regex. - """ - _creation_counter = 0 - - def __init__(self, *args): - self.urls = [] - self.klass = None - self.browser = None - for arg in args: - if isinstance(arg, basestring): - self.urls.append(arg) - if isinstance(arg, type): - self.klass = arg - - self._creation_counter = URL._creation_counter - URL._creation_counter += 1 - - def is_here(self, **kwargs): - """ - Returns True if the current page of browser matches this URL. - If arguments are provided, and only then, they are checked against the arguments - that were used to build the current page URL. - """ - assert self.klass is not None, "You can use this method only if there is a Page class handler." - - if len(kwargs): - params = self.match(self.build(**kwargs)).groupdict() - else: - params = None - - # XXX use unquote on current params values because if there are spaces - # or special characters in them, it is encoded only in but not in kwargs. - return self.browser.page and isinstance(self.browser.page, self.klass) \ - and (params is None or params == dict([(k,unquote(v)) for k,v in self.browser.page.params.iteritems()])) - - def stay_or_go(self, **kwargs): - """ - Request to go on this url only if we aren't already here. - - Arguments are optional parameters for url. - - >>> url = URL('http://exawple.org/(?P).html') - >>> url.stay_or_go(pagename='index') - """ - if self.is_here(**kwargs): - return self.browser.page - - return self.go(**kwargs) - - def go(self, params=None, data=None, **kwargs): - """ - Request to go on this url. - - Arguments are optional parameters for url. - - >>> url = URL('http://exawple.org/(?P).html') - >>> url.stay_or_go(pagename='index') - """ - r = self.browser.location(self.build(**kwargs), params=params, data=data) - return r.page or r - - def open(self, params=None, data=None, **kwargs): - """ - Request to open on this url. - - Arguments are optional parameters for url. - - :param data: POST data - :type url: str or dict or None - - >>> url = URL('http://exawple.org/(?P).html') - >>> url.open(pagename='index') - """ - r = self.browser.open(self.build(**kwargs), params=params, data=data) - return r.page or r - - def build(self, **kwargs): - """ - Build an url with the given arguments from URL's regexps. - - :param param: Query string parameters - - :rtype: :class:`str` - :raises: :class:`UrlNotResolvable` if unable to resolve a correct url with the given arguments. - """ - browser = kwargs.pop('browser', self.browser) - params = kwargs.pop('params', None) - patterns = [] - for url in self.urls: - patterns += normalize(url) - - for pattern, _ in patterns: - url = pattern - # only use full-name substitutions, to allow % in URLs - for kwkey in kwargs.keys(): # need to use keys() because of pop() - search = '%%(%s)s' % kwkey - if search in pattern: - url = url.replace(search, unicode(kwargs.pop(kwkey))) - # if there are named substitutions left, ignore pattern - if re.search('%\([A-z_]+\)s', url): - continue - # if not all kwargs were used - if len(kwargs): - continue - - url = browser.absurl(url, base=True) - if params: - p = requests.models.PreparedRequest() - p.prepare_url(url, params) - url = p.url - return url - - raise UrlNotResolvable('Unable to resolve URL with %r. Available are %s' % (kwargs, ', '.join([pattern for pattern, _ in patterns]))) - - def match(self, url, base=None): - """ - Check if the given url match this object. - """ - if base is None: - assert self.browser is not None - base = self.browser.BASEURL - - for regex in self.urls: - if not re.match(r'^\w+://.*', regex): - regex = re.escape(base).rstrip('/') + '/' + regex.lstrip('/') - m = re.match(regex, url) - if m: - return m - - def handle(self, response): - """ - Handle a HTTP response to get an instance of the klass if it matches. - """ - if self.klass is None: - return - - m = self.match(response.url) - if m: - page = self.klass(self.browser, response, m.groupdict()) - if hasattr(page, 'is_here'): - if callable(page.is_here): - if page.is_here(): - return page - else: - assert isinstance(page.is_here, basestring) - if page.doc.xpath(page.is_here): - return page - else: - return page - - def id2url(self, func): - r""" - Helper decorator to get an URL if the given first parameter is an ID. - """ - def inner(browser, id_or_url, *args, **kwargs): - if re.match('^https?://.*', id_or_url): - if not self.match(id_or_url, browser.BASEURL): - return - else: - id_or_url = self.build(id=id_or_url, browser=browser) - - return func(browser, id_or_url, *args, **kwargs) - return inner - - -class _PagesBrowserMeta(type): - """ - Private meta-class used to keep order of URLs instances of PagesBrowser. - """ - def __new__(mcs, name, bases, attrs): - urls = [(url_name, attrs.pop(url_name)) for url_name, obj in attrs.items() if isinstance(obj, URL)] - urls.sort(key=lambda x: x[1]._creation_counter) - - new_class = super(_PagesBrowserMeta, mcs).__new__(mcs, name, bases, attrs) - if new_class._urls is None: - new_class._urls = OrderedDict() - else: - new_class._urls = deepcopy(new_class._urls) - new_class._urls.update(urls) - return new_class - -class PagesBrowser(DomainBrowser): - r""" - A browser which works pages and keep state of navigation. - - To use it, you have to derive it and to create URL objects as class - attributes. When open() or location() are called, if the url matches - one of URL objects, it returns a Page object. In case of location(), it - stores it in self.page. - - Example: - - >>> class HomePage(Page): - ... pass - ... - >>> class ListPage(Page): - ... pass - ... - >>> class MyBrowser(PagesBrowser): - ... BASEURL = 'http://example.org' - ... home = URL('/(index\.html)?', HomePage) - ... list = URL('/list\.html', ListPage) - ... - - You can then use URL instances to go on pages. - """ - - - _urls = None - __metaclass__ = _PagesBrowserMeta - - def __getattr__(self, name): - if self._urls is not None and name in self._urls: - return self._urls[name] - else: - raise AttributeError("'%s' object has no attribute '%s'" % ( - self.__class__.__name__, name)) - - def __init__(self, *args, **kwargs): - super(PagesBrowser, self).__init__(*args, **kwargs) - - self.page = None - self._urls = deepcopy(self._urls) - for url in self._urls.itervalues(): - url.browser = self - - def open(self, *args, **kwargs): - """ - Same method than - :meth:`weboob.browser2.browser.DomainBrowser.open`, but the - response contains an attribute `page` if the url matches any - :class:`URL` object. - """ - - callback = kwargs.pop('callback', lambda response: response) - - # Have to define a callback to seamlessly process synchronous and - # asynchronous requests, see :meth:`Browser.open` and its `async` - # and `callback` params. - def internal_callback(response): - # Try to handle the response page with an URL instance. - response.page = None - for url in self._urls.itervalues(): - page = url.handle(response) - if page is not None: - self.logger.debug('Handle %s with %s' % (response.url, page.__class__.__name__)) - response.page = page - break - - if response.page is None: - self.logger.debug('Unable to handle %s' % response.url) - - return callback(response) - - return super(PagesBrowser, self).open(callback=internal_callback, *args, **kwargs) - - def location(self, *args, **kwargs): - """ - Same method than - :meth:`weboob.browser2.browser.Browser.location`, but if the - url matches any :class:`URL` object, an attribute `page` is added to - response, and the attribute :attr:`PagesBrowser.page` is set. - """ - if self.page is not None: - # Call leave hook. - self.page.on_leave() - - response = self.open(*args, **kwargs) - - self.response = response - self.page = response.page - self.url = response.url - - if self.page is not None: - # Call load hook. - self.page.on_load() - - # Returns self.response in case on_load recalls location() - return self.response - - def pagination(self, func, *args, **kwargs): - r""" - This helper function can be used to handle pagination pages easily. - - When the called function raises an exception :class:`NextPage`, it goes - on the wanted page and recall the function. - - :class:`NextPage` constructor can take an url or a Request object. - - >>> class Page(HTMLPage): - ... def iter_values(self): - ... for el in self.doc.xpath('//li'): - ... yield el.text - ... for next in self.doc.xpath('//a'): - ... raise NextPage(next.attrib['href']) - ... - >>> class Browser(PagesBrowser): - ... BASEURL = 'http://people.symlink.me' - ... list = URL('/~rom1/projects/weboob/list-(?P\d+).html', Page) - ... - >>> b = Browser() - >>> b.list.go(pagenum=1) - >>> list(b.pagination(lambda: b.page.iter_values())) - ['One', 'Two', 'Three', 'Four'] - """ - while True: - try: - for r in func(*args, **kwargs): - yield r - except NextPage as e: - self.location(e.request) - else: - return - -def pagination(func): - r""" - This helper decorator can be used to handle pagination pages easily. - - When the called function raises an exception :class:`NextPage`, it goes on - the wanted page and recall the function. - - :class:`NextPage` constructor can take an url or a Request object. - - >>> class Page(HTMLPage): - ... @pagination - ... def iter_values(self): - ... for el in self.doc.xpath('//li'): - ... yield el.text - ... for next in self.doc.xpath('//a'): - ... raise NextPage(next.attrib['href']) - ... - >>> class Browser(PagesBrowser): - ... BASEURL = 'http://people.symlink.me' - ... list = URL('/~rom1/projects/weboob/list-(?P\d+).html', Page) - ... - >>> b = Browser() - >>> b.list.go(pagenum=1) - >>> list(b.page.iter_values()) - ['One', 'Two', 'Three', 'Four'] - """ - def inner(page, *args, **kwargs): - while True: - try: - for r in func(page, *args, **kwargs): - yield r - except NextPage as e: - result = page.browser.location(e.request) - page = result.page - else: - return - - return inner - -class NextPage(Exception): - """ - Exception used for example in a Page to tell PagesBrowser.pagination to - go on the next page. - - See :meth:`PagesBrowser.pagination` or decorator :func:`pagination`. - """ - def __init__(self, request): - super(NextPage, self).__init__() - self.request = request - - -def need_login(func): - """ - Decorator used to require to be logged to access to this function. - """ - def inner(browser, *args, **kwargs): - if browser.page is None or not browser.page.logged: - browser.do_login() - return func(browser, *args, **kwargs) - - return inner - - -class LoginBrowser(PagesBrowser): - """ - A browser which supports login. - """ - def __init__(self, username, password, *args, **kwargs): - super(LoginBrowser, self).__init__(*args, **kwargs) - self.username = username - self.password = password - - def do_login(self): - """ - Abstract method to implement to login on website. - - It is call when a login is needed. - """ - raise NotImplementedError() - - -class Page(object): - """ - Base page. - """ - logged = False - - def __init__(self, browser, response, params=None): - self.browser = browser - self.logger = getLogger(self.__class__.__name__.lower(), browser.logger) - self.response = response - self.url = self.response.url - self.params = params - - def on_load(self): - """ - Event called when browser loads this page. - """ - - def on_leave(self): - """ - Event called when browser leaves this page. - """ - -class FormNotFound(Exception): - """ - Raised when :meth:`HTMLPage.get_form` can't find a form. - """ - -class FormSubmitWarning(UserWarning): - """ - A form has more than one submit element selected, and will likely - generate an invalid request. - """ - -class Form(OrderedDict): - """ - Represents a form of an HTML page. - - It is used as a dict with pre-filled values from HTML. You can set new - values as strings by setting an item value. - - submit_el allows you to only consider one submit button (which is what - browsers do). If set to None, it takes all of them, and if set to False, - it takes none. - """ - - def __init__(self, page, el, submit_el=None): - super(Form, self).__init__() - self.page = page - self.el = el - self.submit_el = submit_el - self.method = el.attrib.get('method', 'GET') - self.url = el.attrib.get('action', page.url) - self.name = el.attrib.get('name', '') - submits = 0 - - for inp in el.xpath('.//input | .//select | .//textarea'): - try: - name = inp.attrib['name'] - except KeyError: - continue - - try: - if inp.attrib['type'] in ('checkbox', 'radio') and 'checked' not in inp.attrib: - continue - except KeyError: - pass - - try: - if inp.attrib['type'] == 'submit': - if self.submit_el is not None and inp is not self.submit_el: - continue - else: - submits += 1 - except KeyError: - pass - - if inp.tag == 'select': - options = inp.xpath('.//option[@selected]') - if len(options) == 0: - options = inp.xpath('.//option') - if len(options) == 0: - value = u'' - else: - value = options[0].attrib.get('value', options[0].text or u'') - else: - value = inp.attrib.get('value', inp.text or u'') - - self[name] = value - - if submits > 1: - warnings.warn('Form has more than one submit input, you should chose the correct one', FormSubmitWarning, stacklevel=3) - if self.submit_el is not None and self.submit_el is not False and submits == 0: - warnings.warn('Form had a submit element provided, but it was not found', FormSubmitWarning, stacklevel=3) - - - @property - def request(self): - """ - Get the Request object from the form. - """ - if self.method.lower() == 'get': - req = requests.Request(self.method, self.url, params=self) - else: - req = requests.Request(self.method, self.url, data=self) - req.headers.setdefault('Referer', self.page.url) - return req - - def submit(self, **kwargs): - """ - Submit the form and tell browser to be located to the new page. - """ - kwargs.setdefault('data_encoding', self.page.encoding) - return self.page.browser.location(self.request, **kwargs) - - -class CsvPage(Page): - DIALECT = 'excel' - FMTPARAMS = {} - ENCODING = 'utf-8' - NEWLINES_HACK = True - - """ - If True, will consider the first line as a header. - This means the rows will be also available as dictionnaries. - """ - HEADER = None - - def __init__(self, browser, response, *args, **kwargs): - super(CsvPage, self).__init__(browser, response, *args, **kwargs) - content = response.content - encoding = self.ENCODING - if encoding == 'utf-16le': - content = content.decode('utf-16le')[1:].encode('utf-8') - encoding = 'utf-8' - if self.NEWLINES_HACK: - content = content.replace('\r\n', '\n').replace('\r', '\n') - fp = BytesIO(content) - self.doc = self.parse(fp, encoding) - - def parse(self, data, encoding=None): - import csv - reader = csv.reader(data, dialect=self.DIALECT, **self.FMTPARAMS) - header = None - drows = [] - rows = [] - for i, row in enumerate(reader): - if self.HEADER and i+1 < self.HEADER: - continue - row = self.decode_row(row, encoding) - if header is None and self.HEADER: - header = row - else: - rows.append(row) - if header: - drow = {} - for i, cell in enumerate(row): - drow[header[i]] = cell - drows.append(drow) - return drows if header is not None else row - - def decode_row(self, row, encoding): - if encoding: - return [unicode(cell, encoding) for cell in row] - else: - return row - - -class JsonPage(Page): - def __init__(self, browser, response, *args, **kwargs): - super(JsonPage, self).__init__(browser, response, *args, **kwargs) - from weboob.tools.json import json - self.doc = json.loads(response.text) - - -class XMLPage(Page): - ENCODING = None - """ - Force a page encoding. - It is recommended to use None for autodetection. - """ - - def __init__(self, browser, response, *args, **kwargs): - super(XMLPage, self).__init__(browser, response, *args, **kwargs) - import lxml.etree as etree - parser = etree.XMLParser(encoding=self.ENCODING or response.encoding) - self.doc = etree.parse(BytesIO(response.content), parser) - - -class RawPage(Page): - def __init__(self, browser, response, *args, **kwargs): - super(RawPage, self).__init__(browser, response, *args, **kwargs) - self.doc = response.content - - -class HTMLPage(Page): - """ - HTML page. - """ - FORM_CLASS = Form - - ENCODING = None - """ - Force a page encoding. - It is recommended to use None for autodetection. - """ - - def __init__(self, browser, response, *args, **kwargs): - super(HTMLPage, self).__init__(browser, response, *args, **kwargs) - self.encoding = self.ENCODING or response.encoding - import lxml.html as html - parser = html.HTMLParser(encoding=self.encoding) - self.doc = html.parse(BytesIO(response.content), parser) - - def get_form(self, xpath='//form', name=None, nr=None, submit=None): - """ - Get a :class:`Form` object from a selector. - The form will be analyzed and its parameters extracted. - In the case there is more than one "submit" input, only one of - them should be chosen to generate the request. - - :param xpath: xpath string to select forms - :type xpath: :class:`str` - :param name: if supplied, select a form with the given name - :type name: :class:`str` - :param nr: if supplied, take the n+1 th selected form - :type nr: :class:`int` - :param submit: if supplied, xpath string to select the submit \ - element from the form - :type submit: :class:`str` - :rtype: :class:`Form` - :raises: :class:`FormNotFound` if no form is found - """ - i = 0 - for el in self.doc.xpath(xpath): - if name is not None and el.attrib.get('name', '') != name: - continue - if nr is not None and i != nr: - i += 1 - continue - - if isinstance(submit, basestring): - submit_el = el.xpath(submit)[0] - else: - submit_el = submit - - return self.FORM_CLASS(self, el, submit_el) - - raise FormNotFound() - - -def method(klass): - """ - Class-decorator to call it as a method. - """ - def inner(self, *args, **kwargs): - return klass(self)(*args, **kwargs) - return inner - - -class LoggedPage(object): - """ - A page that only logged users can reach. If we did not get a redirection - for this page, we are sure that the login is still active. - - Do not use this class for page we mixed content (logged/anonymous) or for - pages with a login form. - """ - logged = True diff --git a/weboob/core/repositories.py b/weboob/core/repositories.py index 7720030fd4..c7f6d0343c 100644 --- a/weboob/core/repositories.py +++ b/weboob/core/repositories.py @@ -31,7 +31,7 @@ from compileall import compile_dir from io import BytesIO -from weboob.core.exceptions import BrowserHTTPError, BrowserHTTPNotFound +from weboob.exceptions import BrowserHTTPError, BrowserHTTPNotFound from .modules import LoadedModule from weboob.tools.log import getLogger from weboob.tools.misc import to_unicode @@ -442,7 +442,8 @@ def __init__(self, workdir, datadir, version): self.load() def load_browser(self): - from weboob.browser2.browser import Browser, Weboob as WeboobProfile + from weboob.browser.browsers import Browser + from weboob.browser.profiles import Weboob as WeboobProfile class WeboobBrowser(Browser): PROFILE = WeboobProfile(self.version) if self.browser is None: diff --git a/weboob/deprecated/__init__.py b/weboob/deprecated/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/weboob/tools/browser/__init__.py b/weboob/deprecated/browser/__init__.py similarity index 93% rename from weboob/tools/browser/__init__.py rename to weboob/deprecated/browser/__init__.py index e312226913..66a26125a1 100644 --- a/weboob/tools/browser/__init__.py +++ b/weboob/deprecated/browser/__init__.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from weboob.tools.browser.browser import BrowserIncorrectPassword, BrowserBanned, \ +from weboob.deprecated.browser.browser import BrowserIncorrectPassword, BrowserBanned, \ BrowserUnavailable, BrowserRetry, \ BrowserHTTPNotFound, BrowserHTTPError, \ Page, Browser, BrokenPageError, \ diff --git a/weboob/tools/browser/browser.py b/weboob/deprecated/browser/browser.py similarity index 98% rename from weboob/tools/browser/browser.py rename to weboob/deprecated/browser/browser.py index a2d0817d82..3fdc8f9aba 100644 --- a/weboob/tools/browser/browser.py +++ b/weboob/deprecated/browser/browser.py @@ -49,12 +49,12 @@ from gzip import GzipFile import warnings -from weboob.core.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserPasswordExpired, BrowserForbidden, BrowserBanned, BrowserHTTPNotFound, BrowserHTTPError, FormFieldConversionWarning, BrowserSSLError +from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserPasswordExpired, BrowserForbidden, BrowserBanned, BrowserHTTPNotFound, BrowserHTTPError, FormFieldConversionWarning, BrowserSSLError from weboob.tools.decorators import retry from weboob.tools.log import getLogger -from weboob.tools.mech import ClientForm +from weboob.deprecated.mech import ClientForm ControlNotFoundError = ClientForm.ControlNotFoundError -from weboob.tools.parsers import get_parser +from weboob.deprecated.browser.parsers import get_parser __all__ = ['BrowserIncorrectPassword', 'BrowserForbidden', 'BrowserBanned', 'BrowserUnavailable', 'BrowserRetry', 'BrowserPasswordExpired', 'BrowserHTTPNotFound', 'BrowserHTTPError', 'BrokenPageError', 'Page', @@ -134,7 +134,7 @@ class StandardBrowser(mechanize.Browser): :param firefox_cookies: path to cookies sqlite file :type firefox_cookies: str :param parser: parser to use on HTML files - :type parser: :class:`weboob.tools.parsers.iparser.IParser` + :type parser: :class:`weboob.deprecated.browser.parsers.iparser.IParser` :param history: history manager; default value is an object which does not keep history :type history: object @@ -434,7 +434,7 @@ class Browser(StandardBrowser): :param firefox_cookies: path to cookies sqlite file :type firefox_cookies: str :param parser: parser to use on HTML files - :type parser: :class:`weboob.tools.parsers.iparser.IParser` + :type parser: :class:`weboob.deprecated.browser.parsers.iparser.IParser` :param history: history manager; default value is an object which does not keep history :type history: object diff --git a/weboob/tools/browser/decorators.py b/weboob/deprecated/browser/decorators.py similarity index 100% rename from weboob/tools/browser/decorators.py rename to weboob/deprecated/browser/decorators.py diff --git a/weboob/tools/browser/firefox_cookies.py b/weboob/deprecated/browser/firefox_cookies.py similarity index 100% rename from weboob/tools/browser/firefox_cookies.py rename to weboob/deprecated/browser/firefox_cookies.py diff --git a/weboob/tools/parsers/__init__.py b/weboob/deprecated/browser/parsers/__init__.py similarity index 100% rename from weboob/tools/parsers/__init__.py rename to weboob/deprecated/browser/parsers/__init__.py diff --git a/weboob/tools/parsers/csvparser.py b/weboob/deprecated/browser/parsers/csvparser.py similarity index 100% rename from weboob/tools/parsers/csvparser.py rename to weboob/deprecated/browser/parsers/csvparser.py diff --git a/weboob/tools/parsers/iparser.py b/weboob/deprecated/browser/parsers/iparser.py similarity index 100% rename from weboob/tools/parsers/iparser.py rename to weboob/deprecated/browser/parsers/iparser.py diff --git a/weboob/tools/parsers/jsonparser.py b/weboob/deprecated/browser/parsers/jsonparser.py similarity index 100% rename from weboob/tools/parsers/jsonparser.py rename to weboob/deprecated/browser/parsers/jsonparser.py diff --git a/weboob/tools/parsers/lxmlparser.py b/weboob/deprecated/browser/parsers/lxmlparser.py similarity index 97% rename from weboob/tools/parsers/lxmlparser.py rename to weboob/deprecated/browser/parsers/lxmlparser.py index f2449cbf8a..b5e13fa245 100644 --- a/weboob/tools/parsers/lxmlparser.py +++ b/weboob/deprecated/browser/parsers/lxmlparser.py @@ -64,7 +64,7 @@ def select(cls, element, selector, nb=None, method='cssselect', **kwargs): """ Select one or many elements from an element, using lxml cssselect by default. - Raises :class:`weboob.tools.browser.browser.BrokenPageError` if not found. + Raises :class:`weboob.deprecated.browser.browser.BrokenPageError` if not found. :param element: element on which to apply selector :type element: object diff --git a/weboob/tools/parsers/lxmlsoupparser.py b/weboob/deprecated/browser/parsers/lxmlsoupparser.py similarity index 100% rename from weboob/tools/parsers/lxmlsoupparser.py rename to weboob/deprecated/browser/parsers/lxmlsoupparser.py diff --git a/weboob/tools/mech.py b/weboob/deprecated/mech.py similarity index 100% rename from weboob/tools/mech.py rename to weboob/deprecated/mech.py diff --git a/weboob/core/exceptions.py b/weboob/exceptions.py similarity index 100% rename from weboob/core/exceptions.py rename to weboob/exceptions.py diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index b8e083fb6c..fadf72c9c7 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -32,7 +32,7 @@ from weboob.core import Weboob, CallErrors from weboob.core.backendscfg import BackendsConfig from weboob.tools.config.iconfig import ConfigError -from weboob.core.exceptions import FormFieldConversionWarning +from weboob.exceptions import FormFieldConversionWarning from weboob.tools.log import createColoredFormatter, getLogger, DebugFilter, settings as log_settings from weboob.tools.misc import to_unicode from .results import ResultsConditionError diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index 37963a30ba..080a13839d 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -32,7 +32,7 @@ from weboob.core.backendscfg import BackendAlreadyExists from weboob.core.modules import ModuleLoadError from weboob.core.repositories import ModuleInstallError -from weboob.core.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden, BrowserSSLError +from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden, BrowserSSLError from weboob.tools.value import Value, ValueBool, ValueFloat, ValueInt, ValueBackendPassword from weboob.tools.misc import to_unicode from weboob.tools.ordereddict import OrderedDict diff --git a/weboob/tools/application/qt/qt.py b/weboob/tools/application/qt/qt.py index 58d3b1df29..11d2d2b0a8 100644 --- a/weboob/tools/application/qt/qt.py +++ b/weboob/tools/application/qt/qt.py @@ -34,7 +34,7 @@ from weboob.core.scheduler import IScheduler from weboob.core.repositories import ModuleInstallError from weboob.tools.config.iconfig import ConfigError -from weboob.core.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden +from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden from weboob.tools.value import ValueInt, ValueBool, ValueBackendPassword from weboob.tools.misc import to_unicode from weboob.capabilities import UserError diff --git a/weboob/tools/capabilities/bank/transactions.py b/weboob/tools/capabilities/bank/transactions.py index 81db9e0062..d73c9d6193 100644 --- a/weboob/tools/capabilities/bank/transactions.py +++ b/weboob/tools/capabilities/bank/transactions.py @@ -27,9 +27,9 @@ from weboob.tools.misc import to_unicode from weboob.tools.log import getLogger -from weboob.core.exceptions import ParseError -from weboob.browser2.elements import TableElement, ItemElement -from weboob.browser2.filters.standard import Filter, CleanText, CleanDecimal, TableCell +from weboob.exceptions import ParseError +from weboob.browser.elements import TableElement, ItemElement +from weboob.browser.filters.standard import Filter, CleanText, CleanDecimal, TableCell __all__ = ['FrenchTransaction', 'AmericanTransaction'] diff --git a/weboob/tools/capabilities/gallery/genericcomicreader.py b/weboob/tools/capabilities/gallery/genericcomicreader.py index a5d8de85e0..a872ed2bd4 100644 --- a/weboob/tools/capabilities/gallery/genericcomicreader.py +++ b/weboob/tools/capabilities/gallery/genericcomicreader.py @@ -23,7 +23,7 @@ from weboob.capabilities.gallery import CapGallery, BaseGallery, BaseImage from weboob.tools.backend import Module -from weboob.tools.browser import Browser, Page +from weboob.deprecated.browser import Browser, Page __all__ = ['GenericComicReaderModule'] diff --git a/weboob/tools/capabilities/messages/genericArticle.py b/weboob/tools/capabilities/messages/genericArticle.py index 019d384bf5..3c079ef9f1 100644 --- a/weboob/tools/capabilities/messages/genericArticle.py +++ b/weboob/tools/capabilities/messages/genericArticle.py @@ -17,8 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from weboob.tools.browser import Page -from weboob.tools.browser import BrokenPageError +from weboob.deprecated.browser import Page +from weboob.deprecated.browser import BrokenPageError from lxml.etree import Comment -- GitLab