¿Cómo usar python argparse con args que no sean sys.argv?

He revisado toda la documentación y parece que no hay forma de hacerlo, pero:

¿Hay alguna manera de usar argparse con cualquier lista de cadenas, en lugar de solo con sys.argv?

Aquí está mi problema: tengo un programa que se parece a esto:

# This file is program1.py
import argparse

def main(argv):
    parser = argparse.ArgumentParser()
    # Do some argument parsing

if __name__ == '__main__':
    main(sys.argv)

Esto funciona bien cuando se llama a este programa directamente desde la línea de comandos. Sin embargo, tengo otro script de Python que ejecuta versiones por lotes de este script con diferentes argumentos de línea de comandos, que estoy usando así:

import program1

arguments = ['arg1', 'arg2', 'arg3']
program1.main(arguments)

Todavía quiero poder analizar los argumentos, pero argparse automáticamente usa sys.argv en lugar de los argumentos que le doy. ¿Hay alguna manera de pasar en la lista de argumentos en lugar de usar sys.argv?

Respuestas a la pregunta(2)

Su respuesta a la pregunta