old_contents: from __future__ import print_function, division, absolute_import
  
  import posixpath
  
  from .glob import generic_glob
  from ..base import tokenize
  
  import pyarrow as pa
  
  
  class HDFS3Wrapper(pa.filesystem.DaskFileSystem):
      """Wrapper around `hdfs3.HDFileSystem` that allows it to be passed to
      pyarrow methods"""
      def isdir(self, path):
          return self.fs.isdir(path)
  
      def isfile(self, path):
          return self.fs.isfile(path)
  
  
  _MIN_PYARROW_VERSION_SUPPORTED = '0.8.1.dev81'
  
  
  def update_hdfs_options(options):
      username = options.pop('username', None)
      if username is not None:
          options['user'] = username
      return options
  
  
  class PyArrowHadoopFileSystem(object):
      sep = "/"
  
      def __init__(self, **kwargs):
          self.fs = pa.hdfs.HadoopFileSystem(update_hdfs_options(**kwargs))
  
      @classmethod
      def from_pyarrow(cls, fs):
          out = object.__new__(cls)
          out.fs = fs
          return out
  
      def open(self, path, mode='rb', **kwargs):
          return self.fs.open(path, mode=mode, **kwargs)
  
      def glob(self, path):
          return sorted(generic_glob(self.fs, posixpath, path))
  
      def mkdirs(self, path):
          return self.fs.mkdir(path, create_parents=True)
  
      def ukey(self, path):
          return tokenize(path, self.fs.info(path)['last_modified'])
  
      def size(self, path):
          return self.fs.info(path)['size']
  
      def _get_pyarrow_filesystem(self):
          return self.fs
  
new_contents: from __future__ import print_function, division, absolute_import
  
  import posixpath
  
  from .glob import generic_glob
  from ..base import tokenize
  
  import pyarrow as pa
  
  
  class HDFS3Wrapper(pa.filesystem.DaskFileSystem):
      """Wrapper around `hdfs3.HDFileSystem` that allows it to be passed to
      pyarrow methods"""
      def isdir(self, path):
          return self.fs.isdir(path)
  
      def isfile(self, path):
          return self.fs.isfile(path)
  
  
  _MIN_PYARROW_VERSION_SUPPORTED = '0.8.1.dev81'
  
  
  def update_hdfs_options(options):
      username = options.pop('username', None)
      if username is not None:
          options['user'] = username
      return options
  
  
  class PyArrowHadoopFileSystem(object):
      sep = "/"
  
      def __init__(self, **kwargs):
          self.fs = pa.hdfs.HadoopFileSystem(update_hdfs_options(kwargs))
  
      @classmethod
      def from_pyarrow(cls, fs):
          out = object.__new__(cls)
          out.fs = fs
          return out
  
      def open(self, path, mode='rb', **kwargs):
          return self.fs.open(path, mode=mode, **kwargs)
  
      def glob(self, path):
          return sorted(generic_glob(self.fs, posixpath, path))
  
      def mkdirs(self, path):
          return self.fs.mkdir(path, create_parents=True)
  
      def ukey(self, path):
          return tokenize(path, self.fs.info(path)['last_modified'])
  
      def size(self, path):
          return self.fs.info(path)['size']
  
      def _get_pyarrow_filesystem(self):
          return self.fs
  
subject: Fix bug in pyarrow and hdfs (#4453)