Fix import errors more elegantly.

This commit is contained in:
Shizmob 2014-07-31 00:41:43 +02:00
parent b76967dc77
commit b37c2b39ea
2 changed files with 43 additions and 29 deletions

View File

@ -1,19 +1,16 @@
import os
from . import async, connection, protocol, client, features
from .async import coroutine, Future
from .client import Error, NotInChannel, AlreadyInChannel, BasicClient, ClientPool
from .features.ircv3_1.cap import NEGOTIATING as CAPABILITY_NEGOTIATING, FAILED as CAPABILITY_FAILED, NEGOTIATED as CAPABILITY_NEGOTIATED
__name__ = 'pydle'
__version__ = '0.8.0'
__version_info__ = (0, 8, 0)
__license__ = '3-clause BSD'
__license__ = 'BSD'
if os.environ.get('READTHEDOCS', None) != 'True':
from . import async, connection, protocol, client, features
from .async import coroutine, Future
from .client import Error, NotInChannel, AlreadyInChannel, BasicClient, ClientPool
from .features.ircv3_1.cap import NEGOTIATING as CAPABILITY_NEGOTIATING, FAILED as CAPABILITY_FAILED, NEGOTIATED as CAPABILITY_NEGOTIATED
def featurize(*features):
def featurize(*features):
""" Put features into proper MRO order. """
from functools import cmp_to_key
@ -28,10 +25,10 @@ if os.environ.get('READTHEDOCS', None) != 'True':
name = 'FeaturizedClient[{features}]'.format(features=', '.join(feature.__name__ for feature in sorted_features))
return type(name, tuple(sorted_features), {})
class Client(featurize(*features.ALL)):
class Client(featurize(*features.ALL)):
""" A fully featured IRC client. """
pass
class MinimalClient(featurize(*features.LITE)):
class MinimalClient(featurize(*features.LITE)):
""" A cut-down, less-featured IRC client. """
pass

View File

@ -1,5 +1,6 @@
## async.py
# Light wrapper around whatever async library pydle uses.
import os
import functools
import itertools
import collections
@ -7,8 +8,24 @@ import threading
import datetime
import types
import tornado.concurrent
import tornado.ioloop
try:
import tornado.concurrent
import tornado.ioloop
except ImportError:
if os.environ.get('READTHEDOCS', None) == 'True':
# Shim some objects for RTD.
class tornado:
class concurrent:
class TracebackFuture:
pass
class ioloop:
class IOLoop:
READ = 1
WRITE = 2
ERROR = 3
else:
raise
FUTURE_TIMEOUT = 30