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