예제 #1
0
    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))
예제 #2
0
    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))
예제 #3
0
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)))
예제 #4
0
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))
예제 #5
0
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)
예제 #6
0
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)