o
    QDi                     @  s   d dl mZ d dlZd dlmZmZ d dlZddlmZ ddl	m
Z
 er0ddlmZ ddlmZ ejd	d
dG dd de
ZdS )    )annotationsN)TYPE_CHECKINGDict   )errors)Check)Resource)RowTF)kw_onlyreprc                      s8   e Zd ZdZdZejgZd fddZdd	d
Z	  Z
S )duplicate_rowz{Check for duplicate rows

    This check can be enabled using the `checks` parameter
    for the `validate` function.

    zduplicate-rowresourcer   c                   s   t  | i | _d S )N)superconnect_duplicate_row__memory)selfr   	__class__ ^/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/checks/row/duplicate_row.pyr      s   
zduplicate_row.connectrowr	   c                 c  sd    d tt| }t|d }| j	|}|r*d| }t
jj||dV  |j| j|< d S )N,zutf-8z the same as row at position "%s")note)joinmapstrvalueshashlibsha256encode	hexdigestr   getr   DuplicateRowErrorfrom_row
row_number)r   r   texthashmatchr   r   r   r   validate_row$   s   zduplicate_row.validate_row)r   r   )r   r	   )__name__
__module____qualname____doc__typer   r"   Errorsr   r(   __classcell__r   r   r   r   r      s    r   )
__future__r   r   typingr   r   attrs r   	checklistr   r   r   tabler	   definer   r   r   r   r   <module>   s    