def __str__(self):
        print_groups = []
        if self.name:
            print_groups.append(self.name + ' (' + str(self.type) + ')')

        print_groups.append('Lon/Lat Domain: {0}'.format(self.lon_lat_domain))
        print_groups.append('Projected Domain: {0}'.format(self.proj_domain))
        print_groups.append('Date Range: {0}'.format(self.date_range))

        indent = ' ' * 4
        if self.axes:
            print_groups.append('Axes:')
            for ax in self.axes.values():
                print_groups.append(reindent_lines(indent, str(ax)))

        if self.coord_systems:
            print_groups.append('Coordinate Systems:')
            for sys in self.coord_systems.values():
                print_groups.append(reindent_lines(indent, str(sys)))

        if self.transforms:
            print_groups.append('Coordinate Transforms:')
            for trans in self.transforms.values():
                print_groups.append(reindent_lines(indent, str(trans)))

        if self.grids:
            print_groups.append('Grids:')
            for grid in self.grids.values():
                print_groups.append(reindent_lines(indent, str(grid)))

        if self.ncattrs():
            print_groups.append('Attributes:')
            for att in self.ncattrs():
                print_groups.append('{0}{1}: {2}'.format(indent, att, getattr(self, att)))
        return '\n'.join(print_groups)
Must be called after computing HTML/final URL
dataset/ETHPy150Open Unidata/siphon/siphon/cdmr/coveragedataset.py/CoverageDataset.__str__--crossover with--dataset/ETHPy150Open codelucas/newspaper/newspaper/article.py/Article.build_resource_path