





import abc
import copy
import dataclasses
from dataclasses import dataclass
from typing import ClassVar, Dict, Type, TypeVar

from ..features import Features


UpperCAmelCase			:			Dict	  = TypeVar("""T""", bound="""TaskTemplate""")







@dataclass(frozen=UpperCamelCase__)
class        __lowerCAmelCase (					abc.ABC):
      # `task` is not a ClassVar since we want it to be part of the `asdict` output for JSON serialization
      _lowercase       :      str
      _lowercase       :      ClassVar[Features]
      _lowercase       :      ClassVar[Features]







      def      _lowercase						(					self	,   lowerCAmelCase__							)     ->		T:



        '''simple docstring'''




        return copy.deepcopy(self							)







      @property
      def      _lowercase						(					self							)     ->		Features:



        '''simple docstring'''




        return Features(**self.input_schema	,   **self.label_schema							)







      @property
      @abc.abstractmethod
      def      _lowercase						(					self							)     ->		Dict[str, str]:



        '''simple docstring'''




        raise NotImplementedError







      @classmethod
      def      _lowercase						(					cls	,   lowerCAmelCase__							)     ->		T:



        '''simple docstring'''




        a__			:      Any            ={f.name for f in dataclasses.fields(cls							)}
        return cls(**{k: v for k, v in template_dict.items() if k in field_names}							)













def   _A (	SCREAMING_SNAKE_CASE  :     int		):





  """simple docstring"""



  barcode //= 10  # exclude the last digit
  a__			:      int            =False
  a__			:      List[str]            =0

  # extract and check each digit
  while barcode != 0:
    a__			:      Optional[Any]            =1 if checker else 3
    s += mult * (barcode % 10)
    barcode //= 10
    a__			:      Union[str, Any]            =not checker

  return (10 - (s % 10)) % 10
def   _A (	SCREAMING_SNAKE_CASE  :     int		):





  """simple docstring"""



  return len(str(SCREAMING_SNAKE_CASE		)		) == 13 and get_check_digit(SCREAMING_SNAKE_CASE		) == barcode % 10
def   _A (	SCREAMING_SNAKE_CASE  :     str		):





  """simple docstring"""



  if str(SCREAMING_SNAKE_CASE		).isalpha():
    a__			:      Tuple            =f'''Barcode \'{barcode}\' has alphabetic characters.'''
    raise ValueError(SCREAMING_SNAKE_CASE		)
  elif int(SCREAMING_SNAKE_CASE		) < 0:
    raise ValueError("The entered barcode has a negative value. Try again."		)
  else:
    return int(SCREAMING_SNAKE_CASE		)


if __name__ == "__main__":
     import doctest

     doctest.testmod()
     UpperCAmelCase			:			List[str]	  = get_barcode(input("""Barcode: """).strip())

     if is_valid(barcode):
          print(F"""'{barcode}' is a valid barcode.""")
     else:
          print(F"""'{barcode}' is NOT a valid barcode.""")






