text: #!/usr/bin/env python
  # -*- encoding: utf-8 -*-
  from __future__ import absolute_import
  from __future__ import print_function
  
  import io
  import re
  from distutils.command.build import build
  from glob import glob
  from itertools import chain
  from os.path import basename
  from os.path import dirname
  from os.path import join
  from os.path import splitext
  
  from setuptools import Command
  from setuptools import find_packages
  from setuptools import setup
  from setuptools.command.develop import develop
  from setuptools.command.easy_install import easy_install
  from setuptools.command.install_lib import install_lib
  
  
  def read(*names, **kwargs):
      with io.open(
          join(dirname(__file__), *names),
          encoding=kwargs.get('encoding', 'utf8')
      ) as fh:
          return fh.read()
  
  
  class BuildWithPTH(build):
      def run(self):
          build.run(self)
          path = join(dirname(__file__), 'src', 'manhole.pth')
          dest = join(self.build_lib, basename(path))
          self.copy_file(path, dest)
  
  
  class EasyInstallWithPTH(easy_install):
      def run(self):
          easy_install.run(self)
          path = join(dirname(__file__), 'src', 'manhole.pth')
          dest = join(self.install_dir, basename(path))
          self.copy_file(path, dest)
  
  
  class InstallLibWithPTH(install_lib):
      def run(self):
          install_lib.run(self)
          path = join(dirname(__file__), 'src', 'manhole.pth')
          dest = join(self.install_dir, basename(path))
          self.copy_file(path, dest)
          self.outputs = [dest]
  
      def get_outputs(self):
          return chain(install_lib.get_outputs(self), self.outputs)
  
  
  class DevelopWithPTH(develop):
      def run(self):
          develop.run(self)
          path = join(dirname(__file__), 'src', 'manhole.pth')
          dest = join(self.install_dir, basename(path))
          self.copy_file(path, dest)
  
  
  class GeneratePTH(Command):
      user_options = []
  
      def initialize_options(self):
          pass
  
      def finalize_options(self):
          pass
  
      def run(self):
          with open(join(dirname(__file__), 'src', 'manhole.pth'), 'w') as fh:
              with open(join(dirname(__file__), 'src', 'manhole.embed')) as sh:
                  fh.write(
                      'import os, sys;'
                      'exec(%r)' % sh.read().replace('    ', ' ')
                  )
  
  
  setup(
      name='manhole',
      version='1.8.0',
      license='BSD 2-Clause License',
      description='Manhole is in-process service that will accept unix domain socket connections and present the',
      long_description='%s\n%s' % (
          re.compile('^.. start-badges.*^.. end-badges', re.M | re.S).sub('', read('README.rst')),
          re.sub(':[a-z]+:`~?(.*?)`', r'``\1``', read('CHANGELOG.rst'))
      ),
      author='Ionel Cristian Mărieș',
      author_email='contact@ionelmc.ro',
      url='https://github.com/ionelmc/python-manhole',
      packages=find_packages('src'),
      package_dir={'': 'src'},
      py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')],
      include_package_data=True,
      zip_safe=False,
      classifiers=[
          'Development Status :: 5 - Production/Stable',
          'Intended Audience :: Developers',
          'License :: OSI Approved :: BSD License',
          'Operating System :: Unix',
          'Operating System :: POSIX',
          'Programming Language :: Python',
          'Topic :: Software Development :: Debuggers',
          'Topic :: Utilities',
          'Topic :: System :: Monitoring',
          'Topic :: System :: Networking',
          'Programming Language :: Python :: 2.7',
          'Programming Language :: Python :: 3',
          'Programming Language :: Python :: 3.4',
          'Programming Language :: Python :: 3.5',
          'Programming Language :: Python :: 3.6',
          'Programming Language :: Python :: 3.7',
          'Programming Language :: Python :: Implementation :: CPython',
          'Programming Language :: Python :: Implementation :: PyPy',
          'Topic :: Utilities',
      ],
      project_urls={
          'Documentation': 'https://python-manhole.readthedocs.io/',
          'Changelog': 'https://python-manhole.readthedocs.io/en/latest/changelog.html',
          'Issue Tracker': 'https://github.com/ionelmc/python-manhole/issues',
      },
      entry_points={
          'console_scripts': [
              'manhole-cli = manhole.cli:main',
          ]
      },
      keywords=[
          'debugging', 'manhole', 'thread', 'socket', 'unix domain socket'
      ],
      python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',
      install_requires=[
      ],
      cmdclass={
          'build': BuildWithPTH,
          'easy_install': EasyInstallWithPTH,
          'install_lib': InstallLibWithPTH,
          'develop': DevelopWithPTH,
          'genpth': GeneratePTH,
      },
  )
  