##// END OF EJS Templates
unionrepo: fix mismatches with revlog classes...
unionrepo: fix mismatches with revlog classes This is a subset of cfd30df0f8e4, applied to `unionrepository`. There are none of the `write()` method overrides here, like `bundlerepository`. With these changes, pytype flags the `unionrevlog` constructor: File "/mnt/c/Users/Matt/hg/mercurial/unionrepo.py", line 55, in __init__: No attribute '_revlog' on mercurial.changelog.changelog [attribute-error] Called from (traceback): line 207, in __init__ File "/mnt/c/Users/Matt/hg/mercurial/unionrepo.py", line 55, in __init__: No attribute '_revlog' on mercurial.revlog.revlog [attribute-error] Called from (traceback): line 232, in __init__ But it turns out that both `changelog.changelog` and `revlog.revlog` do have a `target` attribute, so they wouldn't trip over this. It seems weird that the second caller to be flagged is passing the private `_revlog`, but maybe that's how it needs to be.

File last commit:

r52756:f4733654 default
r52768:8315175f default
Show More
bdiffbuild.py
36 lines | 753 B | text/x-python | PythonLexer
from __future__ import annotations
import cffi
import os
ffi = cffi.FFI()
with open(
os.path.join(os.path.join(os.path.dirname(__file__), '..'), 'bdiff.c')
) as f:
ffi.set_source(
"mercurial.cffi._bdiff", f.read(), include_dirs=['mercurial']
)
ffi.cdef(
"""
struct bdiff_line {
int hash, n, e;
ssize_t len;
const char *l;
};
struct bdiff_hunk;
struct bdiff_hunk {
int a1, a2, b1, b2;
struct bdiff_hunk *next;
};
int bdiff_splitlines(const char *a, ssize_t len, struct bdiff_line **lr);
int bdiff_diff(struct bdiff_line *a, int an, struct bdiff_line *b, int bn,
struct bdiff_hunk *base);
void bdiff_freehunks(struct bdiff_hunk *l);
void free(void*);
"""
)
if __name__ == '__main__':
ffi.compile()