diff --git a/MANIFEST.in b/MANIFEST.in index 67a93b5..adce23c 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,7 @@ include requirements.txt include test-requirements.txt include README.md +include bitter/VERSION graft bitter/templates graft bitter/static graft test diff --git a/bitter/VERSION b/bitter/VERSION new file mode 100644 index 0000000..167b000 --- /dev/null +++ b/bitter/VERSION @@ -0,0 +1 @@ +0.5.4 \ No newline at end of file diff --git a/bitter/__init__.py b/bitter/__init__.py index f1552bd..1ef9dc4 100644 --- a/bitter/__init__.py +++ b/bitter/__init__.py @@ -3,8 +3,15 @@ Bitter module. A library and cli for Twitter using python-twitter. http://github.com/balkian/bitter """ -from future.standard_library import install_aliases -install_aliases() +try: + from future.standard_library import install_aliases + install_aliases() +except ImportError: + # Avoid problems at setup.py and py3.x + pass + +import os + +from .version import __version__ -__version__ = '0.5.0' __all__ = ['cli', 'config', 'crawlers', 'models', 'utils' ] diff --git a/bitter/crawlers.py b/bitter/crawlers.py index fc2122b..59f2976 100644 --- a/bitter/crawlers.py +++ b/bitter/crawlers.py @@ -8,6 +8,7 @@ logger = logging.getLogger(__name__) from twitter import * from collections import OrderedDict +from threading import Lock from . import utils from . import config @@ -41,6 +42,7 @@ class TwitterWorker(object): self.name = name self.client = client self.throttled_time = False + self._lock = Lock() self.busy = False @property @@ -76,6 +78,7 @@ class TwitterQueue(AttrToFunc): c = None try: c = self.next() + c._lock.acquire() c.busy = True logger.debug('Next: {}'.format(c.name)) ping = time.time() @@ -97,6 +100,7 @@ class TwitterQueue(AttrToFunc): finally: if c: c.busy = False + c._lock.release() @property diff --git a/bitter/version.py b/bitter/version.py new file mode 100644 index 0000000..8d3f7ec --- /dev/null +++ b/bitter/version.py @@ -0,0 +1,4 @@ +import os + +with open(os.path.join(os.path.dirname(__file__), 'VERSION')) as f: + __version__ = f.read().strip() diff --git a/requirements-py2.txt b/requirements-py2.txt index 03fdf8e..55cf629 100644 --- a/requirements-py2.txt +++ b/requirements-py2.txt @@ -1 +1,2 @@ contextlib2 +future diff --git a/requirements.txt b/requirements.txt index 3096c17..63537f8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ sqlalchemy twitter click -future diff --git a/setup.py b/setup.py index d295ac3..890042d 100644 --- a/setup.py +++ b/setup.py @@ -23,16 +23,12 @@ if sys.version_info <= (3, 0): install_reqs = [str(ir.req) for ir in install_reqs] test_reqs = [str(ir.req) for ir in test_reqs] -with open('bitter/__init__.py') as f: - exec(f.read()) +from bitter import __version__ setup( name="bitter", packages=['bitter'], - description=''' - Simplifying how researchers access Data. - It includes a CLI and a library. - ''', + description=" Simplifying how researchers access Data. It includes a CLI and a library.", author='J. Fernando Sanchez', author_email='balkian@gmail.com', url="http://balkian.com",