human
Can you provide a the Python program you requested given the following:
Complete the below
def keywords_with_side_effects(argv):

    ''''Get a dictionary with setup keywords that (can) have side effects.
    :param argv: A list of strings with command line arguments.
    :returns: A dictionary with keyword arguments for the ``setup()`` function.
    This setup.py script uses the setuptools \'setup_requires\' feature because
    this is required by the cffi package to compile extension modules. The
    purpose of ``keywords_with_side_effects()`` is to avoid triggering the cffi
    build process as a result of setup.py invocations that don\'t need the cffi
    module to be built (setup.py serves the dual purpose of exposing package
    metadata).
    All of the options listed by ``python setup.py --help`` that print
    information should be recognized here. The commands ``clean``,
    ``egg_info``, ``register``, ``sdist`` and ``upload`` are also recognized.
    Any combination of these options and commands is also supported.
    This function was originally based on the `setup.py script`_ of SciPy (see
    also the discussion in `pip issue #25`_).
    .. _pip issue #25: https://github.com/pypa/pip/issues/25
    .. _setup.py script: https://github.com/scipy/scipy/blob/master/setup.py'
    '''
assistant
#Here is the Python program you requested.
    no_setup_requires_arguments = ('-h', '--help', '-n', '--dry-run', '-q', '--quiet', '-v', '--verbose', '-V', '--version', '--author', '--author-email', '--classifiers', '--contact', '--contact-email', '--description', '--egg-base', '--fullname', '--help-commands', '--keywords', '--licence', '--license', '--long-description', '--maintainer', '--maintainer-email', '--name', '--no-user-cfg', '--obsoletes', '--platforms', '--provides', '--requires', '--url', 'clean', 'egg_info', 'register', 'sdist', 'upload')
    def is_short_option(argument):
        'Check    whether    a    command    line    argument    is    a    short    option.'
        return ((len(argument) >= 2) and (argument[0] == '-') and (argument[1] != '-'))
    def expand_short_options(argument):
        'Expand    combined    short    options    into    canonical    short    options.'
        return (('-' + char) for char in argument[1:])
    def argument_without_setup_requirements(argv, i):
        'Check    whether    a    command    line    argument    needs    setup    requirements.'
        if (argv[i] in no_setup_requires_arguments):
            return True
        elif (is_short_option(argv[i]) and all(((option in no_setup_requires_arguments) for option in expand_short_options(argv[i])))):
            return True
        elif (argv[(i - 1):i] == ['--egg-base']):
            return True
        else:
            return False
    if all((argument_without_setup_requirements(argv, i) for i in range(1, len(argv)))):
        return {'cmdclass': {'build': DummyBuild, 'install': DummyInstall, 'test': DummyPyTest}}
    else:
        cffi_modules = ['src/_cffi_src/build_openssl.py:ffi', 'src/_cffi_src/build_constant_time.py:ffi', 'src/_cffi_src/build_padding.py:ffi']
        return {'setup_requires': setup_requirements, 'cmdclass': {'test': PyTest}, 'cffi_modules': cffi_modules}