def test_nb_module_name_has_highest_priority(): # get_imported_modules.nb_module_name should have highest priority. This is the associated notebook module. # Ex: vision.transforms.ipynb is associated with fastai.vision.transforms docstr = "`transform`" expected = "[`transform`](/text.transform#text.transform)" modules = gen_notebooks.get_imported_modules([], nb_module_name='fastai.text.transform') assert_link(docstr, expected, modules=modules) expected = "[`transform`](/tabular.transform#tabular.transform)" modules = gen_notebooks.get_imported_modules([], nb_module_name='fastai.tabular.transform') assert_link(docstr, expected, modules=modules)
def test_link_vision_learner_priority(): # Edge case for vision.learner.ipynb imports = """from fastai.gen_doc.nbdoc import * from fastai.vision import * from fastai import * """ docstr = "Pass in your `data`, calculated `preds`, actual `y`," expected = "Pass in your [`data`](/vision.data#vision.data), calculated `preds`, actual `y`," err_msg = "`data` should link to vision.data instead of text.data." modules = gen_notebooks.get_imported_modules([gen_notebooks.get_code_cell(imports)], nb_module_name='fastai.vision.learner') assert_link(docstr, expected, modules=modules, msg=err_msg)
def assert_link(docstr, expected, nb_cells=None, modules=None, msg=''): if modules is None: modules = gen_notebooks.get_imported_modules(nb_cells or []) linked = nbdoc.link_docstring(modules, docstr) print('Linked:', linked) assert linked == expected, f'{msg}\nExpected: {expected}\nActual: {linked}'