59 Commits

Author SHA1 Message Date
Calum Lind
9dcd90056d [Lint] Fix flake8 warnings
- Use six to silence flake8 undefined Python 2 names on Python 3.
- Fix W605 invalid escape sequence.
- Cleanup unused exception variables.
2018-10-25 15:14:19 +01:00
Calum Lind
b1cdc32f73 [Lint] Use Black to auto-format code
The move to using auto-formatter makes it easier to read, submit and
speeds up development time. https://github.com/ambv/black/

Although I would prefer 79 chars, the default line length of 88 chars
used by black suffices. The flake8 line length remains at 120 chars
since black does not touch comments or docstrings and this will require
another round of fixes.

The only black setting that is not standard is the use of double-quotes
for strings so disabled any formatting of these. Note however that
flake8 will still flag usage of double-quotes. I may change my mind on
double vs single quotes but for now leave them.

A new pyproject.toml file has been created for black configuration.
2018-10-03 15:21:53 +01:00
Calum Lind
d642fa3989 Fix files to pass new Flake8 checkers
Some new flake8 checkers were added so fix these new warnings and
any issues uncovered.

Use add-trailing-comma to fix missing trailing commas. It does not
format it as well as I would like however it was fast to change and
helps with git changes in future.

Removed pylint from tox due to large number of warnings.
2018-06-01 23:41:17 +01:00
Calum Lind
af7e83bc76 Replace/remove usage of dict.keys() 2017-03-16 23:20:56 +00:00
Calum Lind
eb38e0ffff [Py2to3] Large set of changes for Python 3 compat
- Preparation work for using six or future module for Py2/3 compat. The
   code will be written in Python 3 with Python 2 fallbacks.
 - Added some Py3 imports with Py2 fallbacks to make it easier to remove
   Py2 code in future.
 - Replace xrange with range (sort out import as top of files in future).
 - Workaround Py2to3 basestring issue with inline if in instances. This means
   every usage of basestring is more considered.
 - Replace iteritems and itervalues for items and values. There might be a
   performance penalty on Py2 so might need to revisit this change.
2017-03-16 23:20:56 +00:00
Calum Lind
b2db96e4df [Py2to3] Refactor out usage of unicode and basestring
- Python 3 renames `unicode` type to `str` and introduces `bytes` type.
 - Python 2.7 has `bytes` but is only an alias for `str` so restricted
   to comparisons but helps keep compatibility.
 - To test for unicode string on Py2 and Py3 uses the "''.__class__" type.
 - Remove usage of utf8encode and just encode, problems with bytes being passed
   in code will be picked up faster.
 - Where possible refactor out isinstance for try..except duck-typing.
2017-02-23 00:35:43 +00:00
Calum Lind
84802da29b [Py2to3] Force unicode_literals and fix related issues
* Added `from __future__ import unicode_literals` to every file so
   now all strings in code are forced to be unicode strings unless
   marked as byte string `b'str'` or encoded to byte string `'str'.encode('utf-8')`.

   This is a large change but we have been working towards the goal of unicode
   strings passed in the code so decoding external input and encoding
   output as byte strings (where applicable).

   Note that in Python 2 the `str` type still refers to byte strings.

 * Replaced the use of `str` for `basestring` in isinstance comparison as
   this was the original intention but breaks code when encoutering unicode strings.

 * Marked byte strings in gtkui as the conversion to utf8 is not always handled, mostly
   related to gobject signal names.
2017-02-22 12:36:32 +00:00
Calum Lind
2657cc3921 [Lint] Quote cleanup 2016-11-17 10:19:59 +00:00
Calum Lind
3a2ff0c188 [Lint] Convert all python double quotes to single quotes
* A rather disruptive change but for a few reasons such as easier to read,
   easier type, keep consistent and javascript code uses single quotes.
 * There are a few exceptions for the automated process:
    * Any double quotes in comments
    * Triple double quotes for docstrings
    * Strings containing single quotes are left e.g. "they're"

 * To deal with merge conflicts from feature branches it is best to follow
   these steps for each commit:
     * Create a patch: `git format-patch -1 <sha1>`
     * Edit the patch and replace double quotes with single except those in
       comments or strings containing an unescaped apostrophe.
     * Check the patch `git apply --check <patchfile>` and fix any remaining
       issues if it outputs an error.
     * Apply the patch `git am < <patchfile>`
2016-11-03 21:45:45 +00:00
Calum Lind
3f72905b3f Revert "[Py2to3] Clean-up the use of keys() on dictionary objects."
This reverts commit 8b50f3cdbdec4f2fa622aca9d0e4b45e5e4bf3aa.
2016-10-26 19:14:10 +01:00
Andrew Resch
8b50f3cdbd [Py2to3] Clean-up the use of keys() on dictionary objects.
To make the code more Python 3 compatible, I've made a few changes to how we handle keys() or iterkeys() calls on dictionaries. All functionality should remain the same.

 * Remove the use of .keys() or .iterkeys() when iterating through a dictionary.
 * Remove the use of .keys() when checking if key exists in dictionary.
 * Replace dict.keys() with list(dict) to obtain a list of dictionary keys. In Python 3 dict.keys() returns a dict_keys object, not a list.
2016-10-26 09:53:32 +01:00
bendikro
a8dac9bd3a [Base] [Tests] Add more component tests 2016-05-24 21:10:52 +02:00
bendikro
d1acd964a5 [Base] Fix Component docs 2016-05-24 21:10:52 +02:00
bendikro
1f191c3ce1 [Base] Fix incorrect use of defer.fail in component 2016-05-06 12:44:45 +01:00
bendikro
ec366c840c [Core] Fix unnecessary delay when starting components 2016-04-21 14:44:48 +02:00
bendikro
70d8b65f0a [WebUi] [Core] Fixes to plugin handling and WebUi plugin + tests
This should fix problems with errors occuring when failing to
enable plugins. Errors in plugin handling are handled better
and properly logged.

WebUI plugin in particular had issues when being enabled and disabled
multiple times because it was trying to create DelugeWeb component
each time it was enabled. If deluge-web is already listening on
the same port, enabling the WebUI plugin will fail, and the checkbox
will not be checked.

There are still some issues when enabling/disabling plugins by
clicking fast multiple times on the checkbox.
2016-04-18 15:49:30 +01:00
bendikro
194d1291e1 [Core] Emit ConfigValueChangedEvent only in started state 2016-04-11 11:56:34 +01:00
bendikro
620a4eb409 [Base] Catch and log exceptions raised in component.update 2015-12-04 19:05:59 +00:00
Calum Lind
807fa609f9 [Lint] Cleanup code to pass PyLint Warning category
Selected Warning messages disabled in pylintrc:
  * unused-argument: Quite a large and disruptive change if enabled.
  * broad-except: Most required in-depth investigation to determine type.
  * fixme: Not important
  * protected-access: Complicated to fix
  * import-error: Too many false-positives
  * unidiomatic-typecheck: Should be fixed in the next round of checks.
  * unused-variable: Again large and disruptive changes.
  * global-statement: Most usage is required.
  * attribute-defined-outside-init: Should be fixed in next round of checks.
  * arguments-differ: Possible false-positives, needs revisited.
  * no-init, non-parent-init-called, super-init-not-called: False-positives?
  * signature-differs: False-positives?
2015-10-30 18:39:47 +00:00
bendikro
e883bbf10b [Core] Do not remove components from component registry on shutdown
By removing the components after they shut down, KeyErrors are raised when
trying to acccess the component. Unit tests now clear the component registry
on tear down.
2015-08-27 17:16:32 +01:00
bendikro
178c417fb0 [Core] [Tests] Changes to component.shutdown and unit tests
* component registry shutdown() now cleans up the component list
  this ensures that no old components are left when running unit
  tests.

* Added class BaseTestCase that all tests that create components
  should inherit from. It verifies the compoent list before and
  after the tests are run.
2014-12-01 10:52:08 +00:00
Calum Lind
5167e93d12 Flake8 core and common files
* Added N802 to flake8 ignore as certain inherited funcs cannot be changed
   to lowercase and this unresolved warning hides other errors/warnings.
 * Include new header
2014-09-03 23:48:34 +01:00
Calum Lind
b5dcfc6f9e Sort/prettify imports with isort 2014-09-03 18:27:32 +01:00
Chase Sterling
58cb9e1c22 Make sure dependent components are stopped before their dependencies.
Make sure deferreds are not lost in new resume saving code.
2012-12-07 22:22:24 -05:00
Calum Lind
9053280e14 Alternative fix for re-enabling plugin issue 2012-03-02 13:19:23 +00:00
John Garland
cf891125e6 Only deregister component if registry still exists 2011-07-05 17:58:18 +10:00
Andrew Resch
5bc63fa910 Change component.deregister to take the object as the parameter, not the name 2011-06-06 14:19:51 -07:00
Pedro Algarvio
59f9d4e5cc Revert "Work around plugins being garbage collected once enabled twice."
This reverts commit 2f71ef4264de9b814e111236efc05b2de63e1db1.
2011-06-06 18:16:05 +01:00
Pedro Algarvio
2f71ef4264 Work around plugins being garbage collected once enabled twice.
When a plugin is enabled, disabled and then enabled again, on that second enable, that instance is being garbage collected causing the loading of the plugin to fail. Work around that until we can narrow down why is this is happening on the second enable.
2011-06-05 22:28:37 +01:00
Andrew Resch
2f785216f6 Show errors when trying failing to properly stop a component 2011-06-02 11:53:34 -07:00
Pedro Algarvio
3b00a7de59 Swhiched the old style logging, ie, a single logger for all logging output to several loggers. This brings the ability to tweak the logging levels for each of the loggers, ie, we can have the "deluge" logger be at the ERROR level while having "deluge.core" at the DEBUG level, meaning we will only see log message for all of the deluge loggers above the ERROR level while still having all messages above the DEBUG level for the "deluge.core" logger and it's children. This kind of tweak can be achieved by adding a file named "logging.conf" to deluge's config dir and this is explained on the deluge.log.tweak_logging_levels function.
Passing `-r` to the cli's while also passing `-l` will make the logfile rotate when reaching 5Mb in size. Three backups will be kept at all times.
All deluge's code is now using this new style logging along with the git hosted plugins. For other plugins not hosted by deluge, which still imports `LOG` as the logger, a deprecation warning will be shown explaining the required changes needed to use the new style logging. New plugins created by the `create_plugin` script will use the new logging facilities.
2010-12-06 11:20:22 +00:00
Andrew Resch
afa283cd2d Add an errback for when calling a component's start() fails and revert it back to a Stopped
state in this case
2010-04-08 17:16:28 -07:00
Andrew Resch
7be5b4c8bc Add 2 new states to Component: Starting and Stopping
Fix issue where a Component could have it's start and stop methods called more than once while waiting for their deferreds to fire
2010-03-27 20:05:20 -07:00
Andrew Resch
73db03a33b Fix up some docstrings 2010-03-25 14:43:15 -07:00
Andrew Resch
e7e480cf3e Fix up some docstrings 2010-03-25 12:01:40 -07:00
Andrew Resch
e7c7b8f4db Fix typo 2010-03-24 22:55:45 -07:00
Andrew Resch
78f9f22a40 Raise a KeyError exception if trying to stop a component that hasn't
isn't registered
2010-03-24 22:52:03 -07:00
Andrew Resch
52ea19249c Fix issue where plugins would try to be stopped after they have been
deregistered
2010-03-22 19:59:11 -07:00
Andrew Resch
b0714f625f Rewrite component module to handle deferreds properly
Add test_component
Fix test_core to work with new component module
2010-03-20 19:15:33 -07:00
Pedro Algarvio
8a6ec7232d Merge SVN and HG heads. 2009-11-22 02:34:51 +00:00
Pedro Algarvio
0723a77214 First notifications plugin commit.
Working when not in classic mode. In classic mode, needs some more coding.
2009-11-22 02:34:23 +00:00
Andrew Resch
9b8282010c Fix disabling/enabling plugins after switching daemons 2009-11-08 04:04:40 +00:00
Andrew Resch
22a982430c Remove _update method 2009-07-25 00:41:20 +00:00
Andrew Resch
d67477f6e2 Add OpenSSL exception to all GPL headers 2009-05-18 21:51:49 +00:00
Andrew Resch
3f03cb967a Get Label plugin working in the GtkUI 2009-02-27 17:12:53 +00:00
Andrew Resch
e0735cf5ca Only attempt stopping PluginManagers looping call if it's running. 2009-02-03 06:39:33 +00:00
Andrew Resch
d6fd69eba8 Fix adding torrents 2009-01-29 01:42:48 +00:00
Andrew Resch
e9f8c7b0e8 Get Classic mode working somewhat. There are still some issues to
resolve with it.
2009-01-28 17:59:27 +00:00
Andrew Resch
42588656fd Implement new DelugeRPC method to replace XMLRPC.
This commit breaks _a lot_ of things including the web and console UIs, please do not expect 
anything to work.
2009-01-27 08:03:39 +00:00
Andrew Resch
04d14df8c7 Re-org Core and start using RPCServer 2008-12-20 04:27:59 +00:00