Skip to content

Commit 255c8be

Browse files
committed
do not raise if missing config
1 parent e920c5b commit 255c8be

File tree

6 files changed

+343
-52
lines changed

6 files changed

+343
-52
lines changed

nbdev/config.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,24 @@ def _user_config():
209209
return {}
210210

211211
# %% ../nbs/api/01_config.ipynb #f6660849
212-
@functools.lru_cache(maxsize=None)
213-
def get_config(path=None):
212+
def get_config(path=None, also_settings=False):
214213
"Return nbdev config."
215214
cfg_file = _find_nbdev_pyproject(path)
216-
if cfg_file is None: raise FileNotFoundError("No pyproject.toml with [tool.nbdev] found")
217-
# Check for old settings.ini and complain loudly
218-
old_cfg = cfg_file.parent / 'settings.ini'
219-
if old_cfg.exists():
220-
raise ValueError(f"Found old settings.ini at {old_cfg}. Please migrate to pyproject.toml using `nbdev_migrate`")
221-
d = _load_toml(cfg_file)
222-
user = _user_config()
223-
nbdev = {**user, **d.get('tool', {}).get('nbdev', {})} # project overrides user
224-
return ConfigToml(nbdev, d.get('project', {}), cfg_file)
215+
if cfg_file is not None:
216+
# Check for old settings.ini and complain loudly
217+
old_cfg = cfg_file.parent / 'settings.ini'
218+
if old_cfg.exists() and not also_settings:
219+
raise ValueError(f"Found old settings.ini at {old_cfg}. Please migrate to pyproject.toml using `nbdev_migrate`")
220+
d = _load_toml(cfg_file)
221+
user = _user_config()
222+
nbdev = {**user, **d.get('tool', {}).get('nbdev', {})}
223+
return ConfigToml(nbdev, d.get('project', {}), cfg_file)
224+
if also_settings:
225+
from fastcore.foundation import Config
226+
cfg = Config.find('settings.ini', path)
227+
if cfg: return cfg
228+
cfg_path = Path(path or Path.cwd()).expanduser().absolute()
229+
return ConfigToml(nbdev_defaults, {}, cfg_path/'pyproject.toml')
225230

226231
# %% ../nbs/api/01_config.ipynb #6939b40e
227232
def is_nbdev(path=None): return _find_nbdev_pyproject(path) is not None

nbdev/doclinks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def _qual_syms(entries):
229229
# %% ../nbs/api/05_doclinks.ipynb #3a24b883
230230
@lru_cache(None)
231231
def _build_lookup_table(strip_libs=None, incl_libs=None, skip_mods=None):
232-
cfg = get_config()
232+
cfg = get_config(also_settings=True)
233233
if strip_libs is None:
234234
try: strip_libs = cfg.get('strip_libs') or cfg.lib_name
235235
except FileNotFoundError: strip_libs = 'nbdev'

nbdev/migrate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ def nbdev_migrate_config(path:str='.'): # Project root containing settings.ini
204204
set_version(path/lib_path, d.get('version', '0.0.1'))
205205
lib_name = d.get('lib_name', repo)
206206
txt = pyproject_tmpl.format(name=lib_name, lib_path=lib_path, description=d.get('description', ''),
207-
min_python=d.get('min_python', '3.9'), license=_license_map.get(d.get('license', ''), d.get('license', 'Apache-2.0')),
207+
min_python=d.get('min_python', '3.10'), license=_license_map.get(d.get('license', ''), d.get('license', 'Apache-2.0')),
208208
author=d.get('author', ''), author_email=d.get('author_email', ''),
209209
keywords=d.get('keywords', 'nbdev').split(), git_url=git_url, doc_url=doc_url, branch=branch)
210210
# Add dependencies (combine requirements + pip_requirements)

nbs/api/01_config.ipynb

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -421,19 +421,24 @@
421421
"outputs": [],
422422
"source": [
423423
"#| export\n",
424-
"@functools.lru_cache(maxsize=None)\n",
425-
"def get_config(path=None):\n",
424+
"def get_config(path=None, also_settings=False):\n",
426425
" \"Return nbdev config.\"\n",
427426
" cfg_file = _find_nbdev_pyproject(path)\n",
428-
" if cfg_file is None: raise FileNotFoundError(\"No pyproject.toml with [tool.nbdev] found\")\n",
429-
" # Check for old settings.ini and complain loudly\n",
430-
" old_cfg = cfg_file.parent / 'settings.ini'\n",
431-
" if old_cfg.exists():\n",
432-
" raise ValueError(f\"Found old settings.ini at {old_cfg}. Please migrate to pyproject.toml using `nbdev_migrate`\")\n",
433-
" d = _load_toml(cfg_file)\n",
434-
" user = _user_config()\n",
435-
" nbdev = {**user, **d.get('tool', {}).get('nbdev', {})} # project overrides user\n",
436-
" return ConfigToml(nbdev, d.get('project', {}), cfg_file)"
427+
" if cfg_file is not None:\n",
428+
" # Check for old settings.ini and complain loudly\n",
429+
" old_cfg = cfg_file.parent / 'settings.ini'\n",
430+
" if old_cfg.exists() and not also_settings:\n",
431+
" raise ValueError(f\"Found old settings.ini at {old_cfg}. Please migrate to pyproject.toml using `nbdev_migrate`\")\n",
432+
" d = _load_toml(cfg_file)\n",
433+
" user = _user_config()\n",
434+
" nbdev = {**user, **d.get('tool', {}).get('nbdev', {})}\n",
435+
" return ConfigToml(nbdev, d.get('project', {}), cfg_file)\n",
436+
" if also_settings:\n",
437+
" from fastcore.foundation import Config\n",
438+
" cfg = Config.find('settings.ini', path)\n",
439+
" if cfg: return cfg\n",
440+
" cfg_path = Path(path or Path.cwd()).expanduser().absolute()\n",
441+
" return ConfigToml(nbdev_defaults, {}, cfg_path/'pyproject.toml')"
437442
]
438443
},
439444
{

nbs/api/05_doclinks.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@
651651
"#| export\n",
652652
"@lru_cache(None)\n",
653653
"def _build_lookup_table(strip_libs=None, incl_libs=None, skip_mods=None):\n",
654-
" cfg = get_config()\n",
654+
" cfg = get_config(also_settings=True)\n",
655655
" if strip_libs is None:\n",
656656
" try: strip_libs = cfg.get('strip_libs') or cfg.lib_name\n",
657657
" except FileNotFoundError: strip_libs = 'nbdev'\n",

0 commit comments

Comments
 (0)