File: //usr/lib/python3/dist-packages/mercurial/__pycache__/linelog.cpython-310.pyc
o
�]Lb�; � @ s� d Z ddlmZmZ ddlZddlZddlmZ ddlm Z e�
d�ZG dd � d e�Z
ejG d
d� de��ZejG dd
� d
e��ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�Zdd� ZG dd� de�ZdS )a� linelog is an efficient cache for annotate data inspired by SCCS Weaves.
SCCS Weaves are an implementation of
https://en.wikipedia.org/wiki/Interleaved_deltas. See
mercurial/helptext/internals/linelog.txt for an exploration of SCCS weaves
and how linelog works in detail.
Here's a hacker's summary: a linelog is a program which is executed in
the context of a revision. Executing the program emits information
about lines, including the revision that introduced them and the line
number in the file at the introducing revision. When an insertion or
deletion is performed on the file, a jump instruction is used to patch
in a new body of annotate information.
� )�absolute_import�print_functionN� )�attr)�pycompats >IIc @ s e Zd ZdZdS )�LineLogErrorz>Error raised when something bad happens internally in linelog.N)�__name__�
__module__�__qualname__�__doc__� r r �3/usr/lib/python3/dist-packages/mercurial/linelog.pyr s r c @ s$ e Zd Ze�� Ze�� Ze�� ZdS )�lineinfoN)r r r
r �ib�rev�linenum�_offsetr r r r
r $ s r c @ s, e Zd Ze�� Ze�� Ze�� Zdd� ZdS )�annotateresultc C s
t | j�S �N)�iter�lines��selfr r r
�__iter__4 �
zannotateresult.__iter__N) r r r
r r r r �_eofr r r r r
r . s
r c @ s` e Zd ZejZejdd� �Zejdd� �Zdd� Z ejdd� �Z
ejd d
� �Zejdd� �Zd
S )�_llinstructionc C � d S r r �r �op1�op2r r r
�__init__<