merged python 3 support from RC_0_16

This commit is contained in:
Arvid Norberg 2012-07-16 01:12:39 +00:00
parent 0657690b1c
commit bcfba9e485
4 changed files with 23 additions and 9 deletions

View File

@ -5,6 +5,7 @@
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
import sys import sys
import atexit
import libtorrent as lt import libtorrent as lt
import time import time
import os.path import os.path
@ -36,7 +37,7 @@ class UnixConsole:
new[6][termios.VMIN] = 1 new[6][termios.VMIN] = 1
termios.tcsetattr(self.fd.fileno(), termios.TCSADRAIN, new) termios.tcsetattr(self.fd.fileno(), termios.TCSADRAIN, new)
sys.exitfunc = self._onexit atexit.register(self._onexit)
def _onexit(self): def _onexit(self):
termios.tcsetattr(self.fd.fileno(), termios.TCSADRAIN, self.old) termios.tcsetattr(self.fd.fileno(), termios.TCSADRAIN, self.old)
@ -239,7 +240,7 @@ def main():
for f in args: for f in args:
e = lt.bdecode(open(f, 'rb').read()) e = lt.bdecode(open(f, 'rb').read())
info = lt.torrent_info(e) info = lt.torrent_info(e)
print 'Adding \'%s\'...' % info.name() print('Adding \'%s\'...' % info.name())
atp = {} atp = {}
try: try:

View File

@ -7,8 +7,8 @@ import platform
import sys import sys
if '@BOOST_PYTHON_LIB@' == '': if '@BOOST_PYTHON_LIB@' == '':
print 'You need to pass --enable-python-binding to configure in order ', print('You need to pass --enable-python-binding to configure in order '),
print 'to properly use this setup. There is no boost.python library configured now' print('to properly use this setup. There is no boost.python library configured now')
sys.exit(1) sys.exit(1)
def parse_cmd(cmdline, prefix, keep_prefix = False): def parse_cmd(cmdline, prefix, keep_prefix = False):
@ -33,7 +33,7 @@ if platform.system() == 'Windows':
# msvc 9.0 (2008) is the official windows compiler for python 2.6 # msvc 9.0 (2008) is the official windows compiler for python 2.6
# http://docs.python.org/whatsnew/2.6.html#build-and-c-api-changes # http://docs.python.org/whatsnew/2.6.html#build-and-c-api-changes
if os.system('bjam boost=source link=static geoip=static boost-link=static release msvc-9.0 optimization=space') != 0: if os.system('bjam boost=source link=static geoip=static boost-link=static release msvc-9.0 optimization=space') != 0:
print 'build failed' print('build failed')
sys.exit(1) sys.exit(1)
try: os.mkdir(r'build') try: os.mkdir(r'build')
except: pass except: pass

View File

@ -13,19 +13,19 @@ ses.listen_on(6881, 6891)
info = lt.torrent_info(sys.argv[1]) info = lt.torrent_info(sys.argv[1])
h = ses.add_torrent({'ti': info, 'save_path': './'}) h = ses.add_torrent({'ti': info, 'save_path': './'})
print 'starting', h.name() print('starting', h.name())
while (not h.is_seed()): while (not h.is_seed()):
s = h.status() s = h.status()
state_str = ['queued', 'checking', 'downloading metadata', \ state_str = ['queued', 'checking', 'downloading metadata', \
'downloading', 'finished', 'seeding', 'allocating', 'checking fastresume'] 'downloading', 'finished', 'seeding', 'allocating', 'checking fastresume']
print '\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \ print('\r%.2f%% complete (down: %.1f kb/s up: %.1f kB/s peers: %d) %s' % \
(s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, \ (s.progress * 100, s.download_rate / 1000, s.upload_rate / 1000, \
s.num_peers, state_str[s.state]), s.num_peers, state_str[s.state]), end=' ')
sys.stdout.flush() sys.stdout.flush()
time.sleep(1) time.sleep(1)
print h.name(), 'complete' print(h.name(), 'complete')

View File

@ -267,7 +267,20 @@ namespace
object get_buffer() object get_buffer()
{ {
static char const data[] = "foobar"; static char const data[] = "foobar";
#if PY_VERSION_HEX >= 0x03000000
Py_buffer view;
memset(&view, 0, sizeof(Py_buffer));
view.buf = (void*)data;
view.len = 6;
view.ndim = 1;
view.readonly = true;
view.itemsize = sizeof(char);
Py_ssize_t shape[] = { 6 };
view.shape = shape;
return object(handle<>(PyMemoryView_FromBuffer(&view)));
#else
return object(handle<>(PyBuffer_FromMemory((void*)data, 6))); return object(handle<>(PyBuffer_FromMemory((void*)data, 6)));
#endif
} }
} // namespace unnamed } // namespace unnamed