<commit_before># -*- coding: utf8 -*-
from abc import ABCMeta, abstractmethod
from .structs import AbonStruct, TariffStruct


# Всплывает если из NAS вернулся не удачный результат
class NasFailedResult(Exception):
    pass


# Всплывает когда нет связи с сервером доступа к инету (NAS)
class NasNetworkError(Exception):
    pass


# Проверяет входной тип на принадлежность классу.
# Можно передать объект или коллекцию объектов
# В общем желание организовать строгую типизацию :)
def check_input_type(class_or_type):
    def real_check(fn):
        def wrapped(self, user):
            try:
                for usr in user:
                    assert isinstance(usr, class_or_type)
            except TypeError:
                assert isinstance(user, class_or_type)
            return fn(self, user)
        return wrapped
    return real_check


# Общается с NAS'ом
class BaseTransmitter(metaclass=ABCMeta):
    @abstractmethod
    @check_input_type(AbonStruct)
    def add_user_range(self, user_list):
        """добавляем список абонентов в NAS"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def remove_user_range(self, user_list):
        """удаляем список абонентов"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def add_user(self, user):
        """добавляем абонента"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def remove_user(self, user):
        """удаляем абонента"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def update_user(self, user):
        """чтоб обновить абонента надо изменить всё кроме его uid, по uid абонент будет найден"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def pause_user(self, user):
        """Приостановить обслуживание абонента"""

    @abstractmethod
    @check_input_type(AbonStruct)<commit_msg>Чуть поменял базовый метод удаления списка абонентов<commit_after># -*- coding: utf8 -*-
from abc import ABCMeta, abstractmethod
from .structs import AbonStruct, TariffStruct


# Всплывает если из NAS вернулся не удачный результат
class NasFailedResult(Exception):
    pass


# Всплывает когда нет связи с сервером доступа к инету (NAS)
class NasNetworkError(Exception):
    pass


# Проверяет входной тип на принадлежность классу.
# Можно передать объект или коллекцию объектов
# В общем желание организовать строгую типизацию :)
def check_input_type(class_or_type):
    def real_check(fn):
        def wrapped(self, user):
            try:
                for usr in user:
                    assert isinstance(usr, class_or_type)
            except TypeError:
                assert isinstance(user, class_or_type)
            return fn(self, user)
        return wrapped
    return real_check


# Общается с NAS'ом
class BaseTransmitter(metaclass=ABCMeta):
    @abstractmethod
    @check_input_type(AbonStruct)
    def add_user_range(self, user_list):
        """добавляем список абонентов в NAS"""

    @abstractmethod
    @check_input_type(int)
    def remove_user_range(self, user_ids):
        """удаляем список абонентов"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def add_user(self, user):
        """добавляем абонента"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def remove_user(self, user):
        """удаляем абонента"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def update_user(self, user):
        """чтоб обновить абонента надо изменить всё кроме его uid, по uid абонент будет найден"""

    @abstractmethod
    @check_input_type(AbonStruct)
    def pause_user(self, user):
        """Приостановить обслуживание абонента"""

    @abstractmethod
    @check_input_type(AbonStruct)
{'fraction_non_alphanumeric': 0.08026208026208026, 'fraction_numerical': 0.000546000546000546, 'mean_word_length': 3.285380116959064, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7338951', 'n_tokens_mistral': 1244, 'n_tokens_neox': 1325, 'n_words': 301}