def testSaveReferenceResolver(self): duplicate_of = {'AClass': ['AClass2']} is_fragment = { 'tf': False, 'tf.VERSION': True, 'tf.AClass': False, 'tf.AClass.method': True, 'tf.AClass2': False, 'tf.function': False } py_module_names = ['tf', 'tfdbg'] resolver = reference_resolver_lib.ReferenceResolver( duplicate_of=duplicate_of, is_fragment=is_fragment, py_module_names=py_module_names) outdir = self.workdir filepath = os.path.join(outdir, 'resolver.json') resolver.to_json_file(filepath) resolver2 = reference_resolver_lib.ReferenceResolver.from_json_file( filepath) # There are no __slots__, so all fields are visible in __dict__. self.assertEqual(resolver.__dict__, resolver2.__dict__)
def test_partial_symbol_references(self, string, link): duplicate_of = { 'tf.matmul': 'tf.linalg.matmul', 'tf.layers.Conv2d': 'tf.keras.layers.Conv2D', } is_fragment = { 'tf.keras.Model.fit': True, 'tf.concat': False, 'tf.keras.layers.Conv2D': False, 'tf.linalg.matmul': False, 'tf.compat.v1.math.deprecated': False, 'tf.compat.v1.linalg.matmul': False, 'tf.contrib.y.z': False, } py_module_names = ['tf'] resolver = reference_resolver_lib.ReferenceResolver( duplicate_of=duplicate_of, is_fragment=is_fragment, py_module_names=py_module_names, link_prefix='..') input_string = string.join('``') ref_string = resolver.replace_references(input_string) if link is None: expected = input_string else: expected = self.REF_TEMPLATE.format(link=link, text=string) self.assertEqual(expected, ref_string)
def test_duplicate_fragment(self): duplicate_of = { 'tf.Class2.method': 'tf.Class1.method', 'tf.sub.Class2.method': 'tf.Class1.method', 'tf.sub.Class2': 'tf.Class2' } is_fragment = { 'tf.Class1.method': True, 'tf.Class2.method': True, 'tf.sub.Class2.method': True, 'tf.Class1': False, 'tf.Class2': False, 'tf.sub.Class2': False } py_module_names = ['tf'] reference_resolver = reference_resolver_lib.ReferenceResolver( duplicate_of, is_fragment, py_module_names, link_prefix='') # Method references point to the method, in the canonical class alias. result = reference_resolver.reference_to_url('tf.Class1.method') self.assertEqual('tf/Class1.md#method', result) result = reference_resolver.reference_to_url('tf.Class2.method') self.assertEqual('tf/Class2.md#method', result) result = reference_resolver.reference_to_url('tf.sub.Class2.method') self.assertEqual('tf/Class2.md#method', result) # Class references point to the canonical class alias result = reference_resolver.reference_to_url('tf.Class1') self.assertEqual('tf/Class1.md', result) result = reference_resolver.reference_to_url('tf.Class2') self.assertEqual('tf/Class2.md', result) result = reference_resolver.reference_to_url('tf.sub.Class2') self.assertEqual('tf/Class2.md', result)
def setUp(self): super().setUp() self.known_object = object() reference_resolver = reference_resolver_lib.ReferenceResolver( duplicate_of={}, is_fragment={ 'tfdocs.api_generator.signature.extract_decorators': False }, py_module_names=[]) self.parser_config = config.ParserConfig( reference_resolver=reference_resolver, duplicates={}, duplicate_of={}, tree={}, index={}, reverse_index={ id(self.known_object): 'location.of.object.in.api', id(signature.extract_decorators): 'tfdocs.api_generator.signature.extract_decorators', }, base_dir='/', code_url_prefix='/')