Skip to content

Commit f7dd526

Browse files
authored
Merge pull request #1202 from fastai/hf-space
utility that creates a `requirements.txt` file from `settings.ini`
2 parents 8b77f51 + 85d4939 commit f7dd526

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed

nbdev/_modidx.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,8 @@
277277
'nbdev.release.release_gh': ('api/release.html#release_gh', 'nbdev/release.py'),
278278
'nbdev.release.release_git': ('api/release.html#release_git', 'nbdev/release.py'),
279279
'nbdev.release.release_pypi': ('api/release.html#release_pypi', 'nbdev/release.py'),
280-
'nbdev.release.write_conda_meta': ('api/release.html#write_conda_meta', 'nbdev/release.py')},
280+
'nbdev.release.write_conda_meta': ('api/release.html#write_conda_meta', 'nbdev/release.py'),
281+
'nbdev.release.write_requirements': ('api/release.html#write_requirements', 'nbdev/release.py')},
281282
'nbdev.serve': { 'nbdev.serve._is_qpy': ('api/serve.html#_is_qpy', 'nbdev/serve.py'),
282283
'nbdev.serve._proc_file': ('api/serve.html#_proc_file', 'nbdev/serve.py'),
283284
'nbdev.serve.proc_nbs': ('api/serve.html#proc_nbs', 'nbdev/serve.py')},

nbdev/release.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
# %% auto 0
44
__all__ = ['GH_HOST', 'Release', 'changelog', 'release_git', 'release_gh', 'pypi_json', 'latest_pypi', 'pypi_details',
5-
'conda_output_path', 'write_conda_meta', 'anaconda_upload', 'release_conda', 'chk_conda_rel', 'release_pypi',
6-
'release_both', 'bump_version', 'nbdev_bump_version']
5+
'conda_output_path', 'write_conda_meta', 'write_requirements', 'anaconda_upload', 'release_conda',
6+
'chk_conda_rel', 'release_pypi', 'release_both', 'bump_version', 'nbdev_bump_version']
77

88
# %% ../nbs/api/release.ipynb 14
99
from fastcore.all import *
@@ -236,6 +236,15 @@ def write_conda_meta(path='conda'):
236236
_write_yaml(path, *_get_conda_meta())
237237

238238
# %% ../nbs/api/release.ipynb 43
239+
# This function is used as a utility for creating HF spaces.
240+
def write_requirements(directory=None):
241+
"Writes a `requirements.txt` file to `directory` based on settings.ini."
242+
cfg = get_config()
243+
d = Path(directory) if directory else cfg.config_path
244+
req = '\n'.join([cfg.get(k, '').replace(' ', '\n') for k in ['requirements', 'pip_requirements']])
245+
(d/'requirements.txt').mk_write(req)
246+
247+
# %% ../nbs/api/release.ipynb 45
239248
def anaconda_upload(name, loc=None, user=None, token=None, env_token=None):
240249
"Upload `name` to anaconda"
241250
user = f'-u {user} ' if user else ''
@@ -245,7 +254,7 @@ def anaconda_upload(name, loc=None, user=None, token=None, env_token=None):
245254
if not loc: raise Exception("Failed to find output")
246255
return _run(f'anaconda {token} upload {user} {loc} --skip-existing')
247256

248-
# %% ../nbs/api/release.ipynb 45
257+
# %% ../nbs/api/release.ipynb 47
249258
@call_parse
250259
def release_conda(
251260
path:str='conda', # Path where package will be created
@@ -275,7 +284,7 @@ def release_conda(
275284
if 'anaconda upload' not in res: return print(f"{res}\n\Failed. Check auto-upload not set in .condarc. Try `--do_build False`.")
276285
return anaconda_upload(name, loc)
277286

278-
# %% ../nbs/api/release.ipynb 46
287+
# %% ../nbs/api/release.ipynb 48
279288
def chk_conda_rel(
280289
nm:str, # Package name on pypi
281290
apkg:str=None, # Anaconda Package (defaults to {nm})
@@ -289,7 +298,7 @@ def chk_conda_rel(
289298
pypitag = latest_pypi(nm)
290299
if force or not condatag or pypitag > max(condatag): return f'{pypitag}'
291300

292-
# %% ../nbs/api/release.ipynb 48
301+
# %% ../nbs/api/release.ipynb 50
293302
@call_parse
294303
def release_pypi(
295304
repository:str="pypi" # Respository to upload to (defined in ~/.pypirc)
@@ -299,7 +308,7 @@ def release_pypi(
299308
system(f'cd {_dir} && rm -rf dist && python setup.py sdist bdist_wheel')
300309
system(f'twine upload --repository {repository} {_dir}/dist/*')
301310

302-
# %% ../nbs/api/release.ipynb 49
311+
# %% ../nbs/api/release.ipynb 51
303312
@call_parse
304313
def release_both(
305314
path:str='conda', # Path where package will be created
@@ -315,15 +324,15 @@ def release_both(
315324
release_conda.__wrapped__(path, do_build=do_build, build_args=build_args, skip_upload=skip_upload, mambabuild=mambabuild, upload_user=upload_user)
316325
nbdev_bump_version.__wrapped__()
317326

318-
# %% ../nbs/api/release.ipynb 51
327+
# %% ../nbs/api/release.ipynb 53
319328
def bump_version(version, part=2, unbump=False):
320329
version = version.split('.')
321330
incr = -1 if unbump else 1
322331
version[part] = str(int(version[part]) + incr)
323332
for i in range(part+1, 3): version[i] = '0'
324333
return '.'.join(version)
325334

326-
# %% ../nbs/api/release.ipynb 52
335+
# %% ../nbs/api/release.ipynb 54
327336
@call_parse
328337
def nbdev_bump_version(
329338
part:int=2, # Part of version to bump

nbs/api/release.ipynb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,29 @@
598598
"**NB**: you need to first of all upload your package to PyPi, before creating the conda package."
599599
]
600600
},
601+
{
602+
"cell_type": "code",
603+
"execution_count": null,
604+
"metadata": {},
605+
"outputs": [],
606+
"source": [
607+
"#|export\n",
608+
"# This function is used as a utility for creating HF spaces.\n",
609+
"def write_requirements(directory=None):\n",
610+
" \"Writes a `requirements.txt` file to `directory` based on settings.ini.\"\n",
611+
" cfg = get_config()\n",
612+
" d = Path(directory) if directory else cfg.config_path\n",
613+
" req = '\\n'.join([cfg.get(k, '').replace(' ', '\\n') for k in ['requirements', 'pip_requirements']])\n",
614+
" (d/'requirements.txt').mk_write(req)"
615+
]
616+
},
617+
{
618+
"cell_type": "markdown",
619+
"metadata": {},
620+
"source": [
621+
"This function can be used in situations where you need to generate a `requirements.txt` file for a project."
622+
]
623+
},
601624
{
602625
"cell_type": "code",
603626
"execution_count": null,

0 commit comments

Comments
 (0)