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
99from 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
239248def 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
250259def 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
279288def 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
294303def 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
304313def 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
319328def 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
328337def nbdev_bump_version (
329338 part :int = 2 , # Part of version to bump
0 commit comments