text: """
  fs.osfs.xattrs
  ==============
  
  Extended-attribute support for OSFS
  
  """
  
  
  import os
  import sys
  import errno
  
  from fs.errors import *
  from fs.path import *
  from fs.base import FS
  
  try:
      import xattr
  except ImportError:
      xattr = None
  
  
  if xattr is not None:
  
      class OSFSXAttrMixin(object):
          """Mixin providing extended-attribute support via the 'xattr' module"""
  
          def __init__(self, *args, **kwargs):
              super(OSFSXAttrMixin, self).__init__(*args, **kwargs)
  
          @convert_os_errors
          def setxattr(self, path, key, value):
              xattr.xattr(self.getsyspath(path))[key]=value
  
          @convert_os_errors
          def getxattr(self, path, key, default=None):
              try:
                  return xattr.xattr(self.getsyspath(path)).get(key)
              except KeyError:
                  return default
  
          @convert_os_errors
          def delxattr(self, path, key):
              try:
                  del xattr.xattr(self.getsyspath(path))[key]
              except KeyError:
                  pass
  
          @convert_os_errors
          def listxattrs(self, path):
              return xattr.xattr(self.getsyspath(path)).keys()
  
  else:
  
      class OSFSXAttrMixin(object):
          """Mixin disable extended-attribute support."""
  
          def __init__(self, *args, **kwargs):
              super(OSFSXAttrMixin, self).__init__(*args, **kwargs)
  
          def getxattr(self,path,key,default=None):
              raise UnsupportedError
  
          def setxattr(self,path,key,value):
              raise UnsupportedError
  
          def delxattr(self,path,key):
              raise UnsupportedError
  
          def listxattrs(self,path):
              raise UnsupportedError
  
  