| 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) |
|
|