Submitter | Pulkit Goyal |
---|---|
Date | June 30, 2016, 9:47 a.m. |
Message ID | <91320eb3d9ce90433ec8.1467280039@pulkit-goyal> |
Download | mbox | patch |
Permalink | /patch/15677/ |
State | Rejected |
Headers | show |
Comments
I much rather see keepalive.py updated to not use the `thread` module. The line self._lock = thread.allocate_lock() can safely be replaced by self._lock = threading.Lock() as `threading.Lock` is basically an alias for `thread.allocate_lock`: Python 3.5.0 (default, Oct 16 2015, 13:29:53) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import _thread, threading >>> threading.Lock is _thread.allocate_lock True On 30 June 2016 at 10:47, Pulkit Goyal <7895pulkit@gmail.com> wrote: > # HG changeset patch > # User Pulkit Goyal <7895pulkit@gmail.com> > # Date 1467113601 -19800 > # Tue Jun 28 17:03:21 2016 +0530 > # Node ID 91320eb3d9ce90433ec843525e5563dbad5193e2 > # Parent 752f11e6e60f6214335dd761e6bb045d63747bbb > py3: condiionalize thread import > > The thread module is renamed to _thread in python 3. Now we import util.thread and > hence a test is added in check-code too. > > diff -r 752f11e6e60f -r 91320eb3d9ce contrib/check-code.py > --- a/contrib/check-code.py Tue Jun 28 16:01:53 2016 +0530 > +++ b/contrib/check-code.py Tue Jun 28 17:03:21 2016 +0530 > @@ -331,6 +331,7 @@ > (r'^import cPickle', "don't use cPickle, use util.pickle"), > (r'^import pickle', "don't use pickle, use util.pickle"), > (r'^import httplib', "don't use httplib, use util.httplib"), > + (r'^import thread\n', "don't use thread, use util.thread"), > (r'\.next\(\)', "don't use .next(), use next(...)"), > > # rules depending on implementation of repquote() > diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/keepalive.py > --- a/mercurial/keepalive.py Tue Jun 28 16:01:53 2016 +0530 > +++ b/mercurial/keepalive.py Tue Jun 28 17:03:21 2016 +0530 > @@ -113,12 +113,12 @@ > import hashlib > import socket > import sys > -import thread > > from . import ( > util, > ) > > +thread = util.thread > httplib = util.httplib > urlerr = util.urlerr > urlreq = util.urlreq > diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/pycompat.py > --- a/mercurial/pycompat.py Tue Jun 28 16:01:53 2016 +0530 > +++ b/mercurial/pycompat.py Tue Jun 28 17:03:21 2016 +0530 > @@ -18,6 +18,13 @@ > pickle.dumps # silence pyflakes > > try: > + import thread > + thread.LockType > +except ImportError: > + import _thread as thread > + thread.LockType > + > +try: > import httplib > httplib.HTTPException > except ImportError: > diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/util.py > --- a/mercurial/util.py Tue Jun 28 16:01:53 2016 +0530 > +++ b/mercurial/util.py Tue Jun 28 17:03:21 2016 +0530 > @@ -56,6 +56,7 @@ > #'urlreq', > 'stringio', > 'socketserver', > + 'thread', > 'xmlrpclib', > ): > globals()[attr] = getattr(pycompat, attr) > diff -r 752f11e6e60f -r 91320eb3d9ce tests/test-check-py3-compat.t > --- a/tests/test-check-py3-compat.t Tue Jun 28 16:01:53 2016 +0530 > +++ b/tests/test-check-py3-compat.t Tue Jun 28 17:03:21 2016 +0530 > @@ -115,7 +115,6 @@ > mercurial/hook.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) > mercurial/httpconnection.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob) > mercurial/httppeer.py: error importing module: <SyntaxError> invalid syntax (bundle2.py, line *) (line *) (glob) > - mercurial/keepalive.py: error importing module: <ImportError> No module named 'thread' (line *) (glob) > mercurial/localrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) > mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *) (glob) > mercurial/manifest.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@mercurial-scm.org > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
On Thu, 30 Jun 2016 15:17:19 +0530, Pulkit Goyal wrote: > # HG changeset patch > # User Pulkit Goyal <7895pulkit@gmail.com> > # Date 1467113601 -19800 > # Tue Jun 28 17:03:21 2016 +0530 > # Node ID 91320eb3d9ce90433ec843525e5563dbad5193e2 > # Parent 752f11e6e60f6214335dd761e6bb045d63747bbb > py3: condiionalize thread import > > The thread module is renamed to _thread in python 3. Now we import util.thread and > hence a test is added in check-code too. > > diff -r 752f11e6e60f -r 91320eb3d9ce contrib/check-code.py > --- a/contrib/check-code.py Tue Jun 28 16:01:53 2016 +0530 > +++ b/contrib/check-code.py Tue Jun 28 17:03:21 2016 +0530 > @@ -331,6 +331,7 @@ > (r'^import cPickle', "don't use cPickle, use util.pickle"), > (r'^import pickle', "don't use pickle, use util.pickle"), > (r'^import httplib', "don't use httplib, use util.httplib"), > + (r'^import thread\n', "don't use thread, use util.thread"), > (r'\.next\(\)', "don't use .next(), use next(...)"), > > # rules depending on implementation of repquote() > diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/keepalive.py > --- a/mercurial/keepalive.py Tue Jun 28 16:01:53 2016 +0530 > +++ b/mercurial/keepalive.py Tue Jun 28 17:03:21 2016 +0530 > @@ -113,12 +113,12 @@ > import hashlib > import socket > import sys > -import thread > > from . import ( > util, > ) > > +thread = util.thread We'd better use threading.Lock. The thread module was renamed to _thread because it was considered low-level.
Patch
diff -r 752f11e6e60f -r 91320eb3d9ce contrib/check-code.py --- a/contrib/check-code.py Tue Jun 28 16:01:53 2016 +0530 +++ b/contrib/check-code.py Tue Jun 28 17:03:21 2016 +0530 @@ -331,6 +331,7 @@ (r'^import cPickle', "don't use cPickle, use util.pickle"), (r'^import pickle', "don't use pickle, use util.pickle"), (r'^import httplib', "don't use httplib, use util.httplib"), + (r'^import thread\n', "don't use thread, use util.thread"), (r'\.next\(\)', "don't use .next(), use next(...)"), # rules depending on implementation of repquote() diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/keepalive.py --- a/mercurial/keepalive.py Tue Jun 28 16:01:53 2016 +0530 +++ b/mercurial/keepalive.py Tue Jun 28 17:03:21 2016 +0530 @@ -113,12 +113,12 @@ import hashlib import socket import sys -import thread from . import ( util, ) +thread = util.thread httplib = util.httplib urlerr = util.urlerr urlreq = util.urlreq diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/pycompat.py --- a/mercurial/pycompat.py Tue Jun 28 16:01:53 2016 +0530 +++ b/mercurial/pycompat.py Tue Jun 28 17:03:21 2016 +0530 @@ -18,6 +18,13 @@ pickle.dumps # silence pyflakes try: + import thread + thread.LockType +except ImportError: + import _thread as thread + thread.LockType + +try: import httplib httplib.HTTPException except ImportError: diff -r 752f11e6e60f -r 91320eb3d9ce mercurial/util.py --- a/mercurial/util.py Tue Jun 28 16:01:53 2016 +0530 +++ b/mercurial/util.py Tue Jun 28 17:03:21 2016 +0530 @@ -56,6 +56,7 @@ #'urlreq', 'stringio', 'socketserver', + 'thread', 'xmlrpclib', ): globals()[attr] = getattr(pycompat, attr) diff -r 752f11e6e60f -r 91320eb3d9ce tests/test-check-py3-compat.t --- a/tests/test-check-py3-compat.t Tue Jun 28 16:01:53 2016 +0530 +++ b/tests/test-check-py3-compat.t Tue Jun 28 17:03:21 2016 +0530 @@ -115,7 +115,6 @@ mercurial/hook.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) mercurial/httpconnection.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob) mercurial/httppeer.py: error importing module: <SyntaxError> invalid syntax (bundle2.py, line *) (line *) (glob) - mercurial/keepalive.py: error importing module: <ImportError> No module named 'thread' (line *) (glob) mercurial/localrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *) (glob) mercurial/manifest.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)