| from IPython.core.magic import Magics, line_magic, magics_class |
| from IPython.core.magic_arguments import (argument, magic_arguments, |
| parse_argstring) |
|
|
| from .main import find_dotenv, load_dotenv |
|
|
|
|
| @magics_class |
| class IPythonDotEnv(Magics): |
|
|
| @magic_arguments() |
| @argument( |
| '-o', '--override', action='store_true', |
| help="Indicate to override existing variables" |
| ) |
| @argument( |
| '-v', '--verbose', action='store_true', |
| help="Indicate function calls to be verbose" |
| ) |
| @argument('dotenv_path', nargs='?', type=str, default='.env', |
| help='Search in increasingly higher folders for the `dotenv_path`') |
| @line_magic |
| def dotenv(self, line): |
| args = parse_argstring(self.dotenv, line) |
| |
| dotenv_path = args.dotenv_path |
| try: |
| dotenv_path = find_dotenv(dotenv_path, True, True) |
| except IOError: |
| print("cannot find .env file") |
| return |
|
|
| |
| load_dotenv(dotenv_path, verbose=args.verbose, override=args.override) |
|
|
|
|
| def load_ipython_extension(ipython): |
| """Register the %dotenv magic.""" |
| ipython.register_magics(IPythonDotEnv) |
|
|