Skip to content
This repository has been archived by the owner on Nov 9, 2022. It is now read-only.

Commit

Permalink
Remove Python 2 compatibility code
Browse files Browse the repository at this point in the history
Summary:Closes #5

This pull request also includes three cleanups in separate commits.
Closes #6

Differential Revision: D3155962

Pulled By: pallotron

fb-gh-sync-id: 309c061dd09b7f515d4549e529d8040bacb139ab
fbshipit-source-id: 309c061dd09b7f515d4549e529d8040bacb139ab
  • Loading branch information
berkerpeksag authored and Facebook Github Bot 5 committed Apr 8, 2016
1 parent a4780e8 commit f47bcf7
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 52 deletions.
6 changes: 2 additions & 4 deletions README.md
Expand Up @@ -161,8 +161,7 @@ def print_server_stats(stats):
class StaticHandler(BaseHandler):
def __init__(self, server_addr, peer, path, options, root, stats_callback):
self._root = root
BaseHandler.__init__(
self, server_addr, peer, path, options, stats_callback)
super().__init__(server_addr, peer, path, options, stats_callback)

def get_response_data(self):
return FileResponseData(os.path.join(self._root, self._path))
Expand All @@ -172,8 +171,7 @@ class StaticServer(BaseServer):
handler_stats_callback, server_stats_callback=None):
self._root = root
self._handler_stats_callback = handler_stats_callback
BaseServer.__init__(
self, address, port, retries, timeout, server_stats_callback)
super().__init__(address, port, retries, timeout, server_stats_callback)

def get_handler(self, server_addr, peer, path, options):
return StaticHandler(
Expand Down
8 changes: 2 additions & 6 deletions examples/server.py
Expand Up @@ -61,9 +61,7 @@ def print_server_stats(stats):
class StaticHandler(BaseHandler):
def __init__(self, server_addr, peer, path, options, root, stats_callback):
self._root = root
super(self.__class__, self).__init__(
server_addr, peer, path, options, stats_callback
)
super().__init__(server_addr, peer, path, options, stats_callback)

def get_response_data(self):
return FileResponseData(os.path.join(self._root, self._path))
Expand All @@ -82,9 +80,7 @@ def __init__(
):
self._root = root
self._handler_stats_callback = handler_stats_callback
super(self.__class__, self).__init__(
address, port, retries, timeout, server_stats_callback
)
super().__init__(address, port, retries, timeout, server_stats_callback)

def get_handler(self, server_addr, peer, path, options):
return StaticHandler(
Expand Down
2 changes: 1 addition & 1 deletion fbtftp/__init__.py
Expand Up @@ -9,4 +9,4 @@
from .base_handler import BaseHandler, ResponseData, SessionStats
from .base_server import BaseServer

__all__ = [BaseHandler, BaseServer, ResponseData, SessionStats]
__all__ = ['BaseHandler', 'BaseServer', 'ResponseData', 'SessionStats']
8 changes: 4 additions & 4 deletions fbtftp/base_handler.py
Expand Up @@ -19,8 +19,8 @@
from .netascii import NetasciiReader


class ResponseData(object):
"""A base class reprenting a file-like object"""
class ResponseData:
"""A base class representing a file-like object"""

def read(self, n):
raise NotImplementedError()
Expand Down Expand Up @@ -52,7 +52,7 @@ def close(self):
pass


class SessionStats(object):
class SessionStats:
"""
SessionStats represents a digest of what happened during a session.
Data inside the object gets populated at the end of a session.
Expand Down Expand Up @@ -149,7 +149,7 @@ def __init__(self, server_addr, peer, path, options, stats_callback):
self._listener = socket.socket(family, socket.SOCK_DGRAM)

self._listener.bind((str(server_addr[0]), 0))
multiprocessing.Process.__init__(self)
super().__init__()

def _on_close(self):
"""
Expand Down
11 changes: 3 additions & 8 deletions fbtftp/base_server.py
Expand Up @@ -6,11 +6,6 @@
# LICENSE file in the root directory of this source tree. An additional grant
# of patent rights can be found in the PATENTS file in the same directory.

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import collections
import logging
import select
Expand All @@ -23,7 +18,7 @@
from . import constants


class ServerStats(object):
class ServerStats:
def __init__(self, server_addr=None, interval=None):
"""
`ServerStats` represents a digest of what happened during the server's
Expand Down Expand Up @@ -156,7 +151,7 @@ def duration(self):
return time.time() - self.start_time


class BaseServer(object):
class BaseServer:
def __init__(
self,
address,
Expand Down Expand Up @@ -296,7 +291,7 @@ def on_new_data(self):
data, peer = self._listener.recvfrom(constants.DEFAULT_BLKSIZE)
code = struct.unpack('!H', data[:2])[0]
if code != constants.OPCODE_RRQ:
logging.warn(
logging.warning(
'unexpected TFTP opcode %d, expected %d' %
(code, constants.OPCODE_RRQ)
)
Expand Down
2 changes: 1 addition & 1 deletion fbtftp/netascii.py
Expand Up @@ -9,7 +9,7 @@
import io


class NetasciiReader(object):
class NetasciiReader:
"""
NetasciiReader encodes data coming from a reader into NetASCII.
Expand Down
6 changes: 0 additions & 6 deletions setup.py
@@ -1,9 +1,3 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

from codecs import open
from os import path
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
Expand Down
8 changes: 3 additions & 5 deletions tests/base_handler_test.py
Expand Up @@ -16,7 +16,7 @@
from fbtftp import constants


class MockSocketListener(object):
class MockSocketListener:
def __init__(self, network_queue, peer):
self._network_queue = network_queue
self._peer = peer
Expand All @@ -36,9 +36,7 @@ def __init__(
network_queue=[]
):
self.response = StringResponseData("foo")
super(self.__class__, self).__init__(
server_addr, peer, path, options, stats_callback
)
super().__init__(server_addr, peer, path, options, stats_callback)
self._listener = MockSocketListener(network_queue, peer)
self._listener.sendto = Mock()
self._listener.close = Mock()
Expand Down Expand Up @@ -362,7 +360,7 @@ def testHandleTimeout(self):
self.assertTrue(self.handler._should_stop)

def testNextBlock(self):
class MockResponse(object):
class MockResponse:
def __init__(self, dataiter):
self._dataiter = dataiter

Expand Down
7 changes: 3 additions & 4 deletions tests/base_server_test.py
Expand Up @@ -15,7 +15,7 @@
SELECT_EPOLLIN = 1


class MockSocketListener(object):
class MockSocketListener:
def __init__(self, network_queue):
self._network_queue = network_queue

Expand All @@ -39,9 +39,8 @@ def __init__(
self, address, port, retries, timeout, root, stats_callback,
stats_interval, network_queue
):
super(self.__class__, self).__init__(
address, port, retries, timeout, stats_callback,
stats_interval
super().__init__(
address, port, retries, timeout, stats_callback, stats_interval
)
self._root = root
# mock the network
Expand Down
18 changes: 7 additions & 11 deletions tests/integration_test.py
Expand Up @@ -36,9 +36,7 @@ def close(self):
class StaticHandler(BaseHandler):
def __init__(self, server_addr, peer, path, options, root, stats_callback):
self._root = root
super(self.__class__, self).__init__(
server_addr, peer, path, options, stats_callback
)
super().__init__(server_addr, peer, path, options, stats_callback)

def get_response_data(self):
return FileResponseData(os.path.join(self._root, self._path))
Expand All @@ -48,7 +46,7 @@ class StaticServer(BaseServer):
def __init__(self, address, port, retries, timeout, root, stats_callback):
self._root = root
self._stats_callback = stats_callback
super(self.__class__, self).__init__(address, port, retries, timeout)
super().__init__(address, port, retries, timeout)

def get_handler(self, server_addr, peer, path, options):
return StaticHandler(
Expand Down Expand Up @@ -79,16 +77,14 @@ def busyboxClient(filename, blksize=1400, port=1069):
return (stdout, stderr, p.returncode)


@unittest.skipUnless(
find_executable('busybox'),
'busybox binary not present, install it if you want to run '
'integration tests'
)
class integrationTest(unittest.TestCase):
def setUp(self):
logging.getLogger().setLevel(logging.DEBUG)
# search for busybox on PATH, if not present we skip this integration
# test.
if not find_executable('busybox'):
self.skipTest(
'busybox binary not present, install it if you want to run '
'integration tests'
)

self.tmpdirname = tempfile.TemporaryDirectory()
logging.info("Created temporary directory %s" % self.tmpdirname)
Expand Down
4 changes: 2 additions & 2 deletions tests/malformed_request_test.py
Expand Up @@ -32,7 +32,7 @@
)


class MockSocketListener(object):
class MockSocketListener:
def __init__(self, network_queue):
self._network_queue = network_queue

Expand All @@ -50,7 +50,7 @@ def __init__(
self, address, port, retries, timeout, root, stats_callback,
network_queue
):
super(self.__class__, self).__init__(address, port, retries, timeout)
super().__init__(address, port, retries, timeout)
self._root = root
# mock the network
self._listener = MockSocketListener(network_queue)
Expand Down

0 comments on commit f47bcf7

Please sign in to comment.