text: """A setuptools based setup module.
  
  See:
  https://packaging.python.org/guides/distributing-packages-using-setuptools/
  https://github.com/pypa/sampleproject
  """
  
  # Always prefer setuptools over distutils
  from setuptools import setup, find_packages
  import os
  import re
  import ast
  from os import path
  # io.open is needed for projects that support Python 2.7
  # It ensures open() defaults to text mode with universal newlines,
  # and accepts an argument to specify the text encoding
  # Python 3 only projects can skip this import
  from io import open
  
  here = path.abspath(path.dirname(__file__))
  
  # Get the long description from the README file
  with open(path.join(here, 'README.md'), encoding='utf-8') as f:
      long_description = f.read()
  
  CURDIR = os.path.abspath(os.path.dirname(__file__))
  
  
  def get_version():
      main_file = os.path.join(CURDIR, "src/eventisc", "__init__.py")
      _version_re = re.compile(r"__version__\s+=\s+(?P<version>.*)")
      with open(main_file, "r", encoding="utf8") as f:
          match = _version_re.search(f.read())
          version = match.group("version") if match is not None else '"unknown"'
      return str(ast.literal_eval(version))
  
  
  setup(
      name='event-isc',  # Required
      version=get_version(),  # Required
      description="Library for inter-service event-based communication",
      long_description=long_description,  # Optional
      long_description_content_type='text/markdown',  # Optional (see note above)
      url='https://github.com/radiocut/event-isc/',  # Optional
      author='Guillermo Narvaja',  # Optional
      author_email='guillermo.narvaja@radiocut.fm',  # Optional
      # For a list of valid classifiers, see https://pypi.org/classifiers/
      classifiers=[  # Optional
          # How mature is this project? Common values are
          #   3 - Alpha
          #   4 - Beta
          #   5 - Production/Stable
          'Development Status :: 3 - Alpha',
  
          # Indicate who your project is intended for
          'Intended Audience :: Developers',
  
          # Pick your license as you wish
          'License :: OSI Approved :: MIT License',
  
          # Specify the Python versions you support here. In particular, ensure
          # that you indicate whether you support Python 2, Python 3 or both.
          # These classifiers are *not* checked by 'pip install'. See instead
          # 'python_requires' below.
          'Programming Language :: Python :: 3',
          'Programming Language :: Python :: 3.6',
          'Programming Language :: Python :: 3.7',
          'Programming Language :: Python :: 3.8',
      ],
  
      keywords='event inter-service-communication celery microservices',  # Optional
  
      package_dir={'': 'src'},  # Optional
  
      packages=find_packages(where='src'),  # Required
  
      # Specify which Python versions you support. In contrast to the
      # 'Programming Language' classifiers above, 'pip install' will check this
      # and refuse to install the project if the version does not match. If you
      # do not support Python 2, you can simplify this to '>=3.5' or similar, see
      # https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires
      python_requires='>=3.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4',
  
      install_requires=['environs', 'pyyaml'],  # Optional
  
      # List additional groups of dependencies here (e.g. development
      # dependencies). Users will be able to install these using the "extras"
      # syntax, for example:
      #
      #   $ pip install sampleproject[dev]
      #
      # Similar to `install_requires` above, these must be valid existing
      # projects.
      extras_require={  # Optional
          'requests': ['requests'],
          'celery': ['celery'],
          'pika': ['pika'],
          'dev': ['check-manifest', 'responses', 'celery', 'requests', 'pika'],
          'test': ['coverage', 'responses', 'celery', 'requests', 'pika'],
      },
  
      # List additional URLs that are relevant to your project as a dict.
      #
      # This field corresponds to the "Project-URL" metadata fields:
      # https://packaging.python.org/specifications/core-metadata/#project-url-multiple-use
      #
      # Examples listed include a pattern for specifying where the package tracks
      # issues, where the source is hosted, where to say thanks to the package
      # maintainers, and where to support the project financially. The key is
      # what's used to render the link text on PyPI.
      project_urls={  # Optional
          'Bug Reports': 'https://github.com/radiocutfm/event-isc/issues',
          'Funding': 'https://donate.pypi.org',
          'Say Thanks!': 'https://saythanks.io/to/guillermo.narvaja%40radiocut.fm',
          'Source': 'https://github.com/radiocutfm/event-isc/',
      },
  )
  