sapling/eden/scm/edenscm/streams.py
Muir Manders 44343769f8 collapse edenscm.mercurial package into edenscm
Summary:
We want to rename away from "mercurial". Rather than rename the "mercurial" Python package, we opted to just collapse it into the parent "edenscm" package. This is also a step towards further organizing we want to do around the new project name.

To ease the transition wrt hotfixes, we now replace "edenscm.mercurial" with "mercurial" to fix imports within base64-python extensions.

Reviewed By: sggutier

Differential Revision: D38943169

fbshipit-source-id: 03fa18079c51e2f7fac05d65b127095da3ab7c99
2022-08-24 13:45:53 -07:00

42 lines
1.1 KiB
Python

# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2.
from __future__ import absolute_import
from typing import Iterable
import edenscm # noqa: F401
from . import util
from .node import wdirid
def prefetchtextstream(
repo: "edenscm.localrepo.localrepository",
ctxstream: "Iterable[edenscm.context.basectx]",
) -> "Iterable[edenscm.context.basectx]":
"""Prefetch commit text for a stream of ctx"""
return _prefetchtextstream(repo, ctxstream)
def _prefetchtextstream(repo, ctxstream):
for ctxbatch in util.eachslice(ctxstream, 10000, maxtime=2):
# ctxbatch: [ctx]
nodes = [_rewritenone(c.node()) for c in ctxbatch]
texts = repo.changelog.inner.getcommitrawtextlist(nodes)
for ctx, text in zip(ctxbatch, texts):
ctx._text = text
yield ctx
def _rewritenone(n):
# None is used as a way to refer to "working parent", ex. `repo[None]`.
# Rust bindings do not like None. Rewrite it to `wdirid`.
if n is None:
return wdirid
else:
return n