code: def parse_setup(filepath):
      '''Get the kwargs from the setup function in setup.py'''
      # TODO: Need to parse setup.cfg and merge with the data from below
  
      # Monkey patch setuptools.setup to capture keyword arguments
      setup_kwargs = {}
  
      def setup_interceptor(**kwargs):
          setup_kwargs.update(kwargs)
  
      import setuptools
      setuptools_setup = setuptools.setup
      setuptools.setup = setup_interceptor
  
      # Manually compile setup.py
      with open(filepath, 'r') as f:
          code = compile(f.read(), '', 'exec')
      setup = ModuleType('setup')
      exec(code, setup.__dict__)
  
      # Remove monkey patch
      setuptools.setup = setuptools_setup
      return setup_kwargf parse_setup(filepath):
      '''Get the kwargs from the setup function in setup.py'''
      # TODO: Need to parse setup.cfg and merge with the data from below
  
      # Monkey patch setuptools.setup to capture keyword arguments
      setup_kwargs = {}
  
      def setup_interceptor(**kwargs):
          setup_kwargs.update(kwargs)
  
      import setuptools
      setuptools_setup = setuptools.setup
      setuptools.setup = setup_interceptor
  
      # Manually compile setup.py
      with open(filepath, 'r') as f:
          code = compile(f.read(), '', 'exec')
      setup = ModuleType('setup')
      exec(code, setup.__dict__)
  
      # Remove monkey patch
      setuptools.setup = setuptools_setup
      return setup_kwargs
docs: Get the kwargs from the setup function in setup.py