def rebuild_index(self): packages = [] for package in self._iter_packages(): releases = [] for release in sorted(self._iter_releases(package), reverse=True, key=lambda release: parse_version(release['version'])): release['distributions'] = list(self._iter_distributions(package, release)) if not release['distributions']: continue releases.append(release) write_file(path.join(package['abspath'], 'releases.json'), encode(releases, indent=4, large_object=True)) latest_release = self._get_latest_release(releases) latest_release_txt = path.join(package['abspath'], 'latest_release.txt') if latest_release: package['latest_version'] = latest_release['version'] package['installation_instructions'] = self._get_installation_instructions(package, latest_release) packages.append(package) write_file(latest_release_txt, latest_release['version']) elif path.exists(latest_release_txt): remove(latest_release_txt) sorted_packages = sorted(packages, key=lambda package: package['product_name']) write_file(path.join(self.base_directory, 'packages.json'), encode(sorted_packages, indent=4, large_object=True))
def rebuild_index(self): packages = [] log_execute_assert_success([ 'find', self.base_directory, '-type', 'd', '-empty', '-print', '-delete' ]) for package in self._iter_packages(): releases = [] for release in sorted( self._iter_releases(package), reverse=True, key=lambda release: parse_version(release['version'])): release['distributions'] = list( self._iter_distributions(package, release)) if not release['distributions']: continue releases.append(release) write_file(path.join(package['abspath'], 'releases.json'), encode(releases, indent=4, large_object=True)) latest_release = self._get_latest_release(releases) latest_release_txt = path.join(package['abspath'], 'latest_release.txt') if latest_release: package['latest_version'] = latest_release['version'] package['latest_version_release_date'] = latest_release[ 'release_date'] package[ 'installation_instructions'] = self._get_installation_instructions( package, latest_release) packages.append(package) write_file(latest_release_txt, latest_release['version']) elif path.exists(latest_release_txt): remove(latest_release_txt) sorted_packages = sorted(packages, key=lambda package: package['product_name']) write_file(path.join(self.base_directory, 'packages.json'), encode(sorted_packages, indent=4, large_object=True))
def pretty_print(builtin_datatype, style="solarized"): from pygments import highlight from pygments.lexers import JsonLexer try: from httpie.solarized import Solarized256Style except ImportError: try: from httpie.output.formatters import Solarized256Style except ImportError: from httpie.plugins import FormatterPlugin from httpie.output.formatters.colors import Solarized256Style from pygments.formatters import Terminal256Formatter style = Solarized256Style if style == "solarized" else style print(highlight(encode(builtin_datatype, indent=4, large_object=True), JsonLexer(), Terminal256Formatter(style=style)))
def pretty_print(builtin_datatype, style="solarized"): from pygments import highlight from pygments.lexers import JsonLexer try: from httpie.solarized import Solarized256Style except ImportError: try: from httpie.output.formatters import Solarized256Style except ImportError: from httpie.plugins import FormatterPlugin from httpie.output.formatters.colors import Solarized256Style from pygments.formatters import Terminal256Formatter style = Solarized256Style if style == "solarized" else style print highlight(encode(builtin_datatype, indent=4, large_object=True), JsonLexer(), Terminal256Formatter(style=style))
def safe_json_repr(value, length_limit=1024): try: encoded_string = encode(value) if length_limit and len(encoded_string) > length_limit: raise AssertionError() return decode(encoded_string) except: pass try: encoded_string = repr(value) if length_limit and len(encoded_string) > length_limit: raise AssertionError() return encoded_string except: pass return object.__repr__(value)